mysql show 和explain_mysql查詢性能分析(show status,show profile,explain)

flush status;

show session status like 'select%';

select * from user_account limit 100;#語句沒有使用索引,影響Select_scan值

show session status like 'select%';

select * from user_account where uid=100;#user_account表uid為主鍵,不影響select相關值

show session status like 'select%';

select * from user_account ua left join user_coin_pay_log up on ua.uid=up.uid limit 10;#user_coin_pay_log表uid沒有索引,Select_full_join加1

show session status like 'select%';

select * from user_account where uid < 100;#范圍查詢,影響Select_range值

show session status like 'select%';

select * from user_account ua left join user_collection uc on ua.uid=uc.uid limit 10;#user_collection表uid有索引,不影響Select_full_join

show session status like 'select%';

+------------------------+-------+

| Variable_name          | Value |

+------------------------+-------+

| Select_full_join       | 1     |                                  沒有使用索引的聯表的數量

| Select_full_range_join | 0     |                           在引用的表中使用范圍搜索的聯表的數量

| Select_range           | 1     |                                  在第一個表中使用范圍的聯接的數量

| Select_range_check     | 0     |                           在每一行數據后對鍵值進行檢查的不帶鍵值的聯表的數量。如果不為0,你應仔細檢查表的索引

| Select_scan            | 2     |                                   對第一個表進行完全掃描的聯表的數量

+------------------------+-------+

flush status;show session status like 'Handler%';select * from user_account limit 10;#沒用到索引,進行全索引掃描,影響Handler_read_first,Handler_read_rnd_nextshow session status like 'Handler%';select * from user_account where uid = 100;#uid為主鍵,影響Handler_read_keyshow session status like 'Handler%';select * from user_account where uid > 100 limit 10;#uid為主鍵,影響Handler_read_key,Handler_read_nextshow session status like 'Handler%';select * from user_account where uid < 200 order by uid desc limit 10 ;#uid為主鍵,並且使用desc,影響Handler_read_key,Handler_read_prevshow session status like 'Handler%';select * from user_account group by energy order by count(*) limit 100;#沒有使用索引,並且進行group by和order by,影響Handler_read_first,Handler_read_key,Handler_read_rnd,Handler_read_rnd_next,Handler_update,Handler_write,此條影響“Handler_update,Handler_write”原因是排序使用臨時表

show session status like 'Handler%';

+----------------------------+-------+

| Variable_name              | Value |

+----------------------------+-------+

| Handler_commit             | 2     |

| Handler_delete             | 0     |

| Handler_discover           | 0     |

| Handler_prepare            | 0     |

| Handler_read_first         | 2     |                                  索引中第一條被讀的次數,如果較高,服務器正執行大量全索引掃描

| Handler_read_key           | 33831 |                           根據鍵讀一行的請求數,如果較高,說明查詢和表的索引正確

| Handler_read_next          | 0     |                                按照鍵順序讀下一行的請求數

| Handler_read_prev          | 0     |                                按照鍵順序讀上一行的請求數,主要用於優化ORDER BY ... DESC

| Handler_read_rnd           | 48    |                                根據固定位置讀一行的請求數。如果你正執行大量查詢並需要對結果進行排序該值較高。你可能使用了大量需要MySQL掃描整個表的查詢或你的連接沒有正確使用鍵

| Handler_read_rnd_next      | 33977 |                       在數據文件中讀下一行的請求數。如果你正進行大量的表掃描,該值較高。通常說明你的表索引不正確或寫入的查詢沒有利用索引。

| Handler_rollback           | 0     |

| Handler_savepoint          | 0     |

| Handler_savepoint_rollback | 0     |

| Handler_update             | 33779 |

| Handler_write              | 48    |

+----------------------------+-------+

flush status;show session status like 'Sort%';select * from user_account group by energy order by count(*) limit 100;show session status like 'Sort%';+-------------------+-------+

| Variable_name     | Value |

+-------------------+-------+

| Sort_merge_passes | 0     |                                排序算法已經執行的合並的數量。如果這個變量值較大,應考慮增加sort_buffer_size系統變量的值

| Sort_range        | 0     |                                          在范圍內執行的排序的數量

| Sort_rows         | 0     |                                           已經排序的行數

| Sort_scan         | 0     |                                           通過掃描表完成的排序的數量

+-------------------+-------+

flush status;show session status like 'Created%';

select * from user_account group by energy order by count(*) limit 100;

show session status like 'Created%';

+-------------------------+-------+

| Variable_name           | Value |

+-------------------------+-------+

| Created_tmp_disk_tables | 0     |                      服務器執行語句時在硬盤上自動創建的臨時表的數量

| Created_tmp_files       | 2     |                              mysqld已經創建的臨時文件的數量

| Created_tmp_tables      | 3     |                           服務器執行語句時自動創建的內存中的臨時表的數量。如果Created_tmp_disk_tables較大,你可能要增加tmp_table_size值使臨時 表基於內存而不基於硬盤

+-------------------------+-------+

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值