获取Mysql语句执行时的详细信息
1. 通過SHOW STATUS獲取更多信息
在調試mysql語句時,如果執行計劃不能提供足夠的信息支持判斷,可以通過在語句執行前執行FLUSH STATUS,執行完語句后執行SHOW STATUS LIKE 獲取更多信息,例如:
SHOW STATUS WHERE Variable_name LIKE 'Handler%' OR variable_name LIKE 'Created%';其執行部分結果解釋如下:
| 屬性 | 釋義 |
| Created_tmp_disk_tables | 語句執行時,Mysql創建的磁盤臨時表個數;越少越好 |
| Created_tmp_files | 語句執行時,Mysql創建的臨時文件個數; |
| Created_tmp_tables | 語句執行時,Mysql創建的臨時表總個數;越少越好 |
| Handler_read_first | 讀取第一條索引的次數; 此值越高,表明Mysql進行了多次的全索引掃描(full index scan);而當數據在磁盤不在內存中時,全索引掃描通常會導致許多隨機讀(random read),這通常比全表掃描(full table scan)采用的順序掃描性能更差; |
| Handler_read_key | 通過索引讀取數據的次數; 此值越高表示查詢正確地走了索引; |
| Handler_read_next | 通過索引順序讀取下一行的次數;當出現索引覆蓋掃描或者通過在索引列限制了范圍時,該次數會增加; |
| Handler_read_prev | 通過索引順序讀取前一行的次數;這種讀取方式主要用于對ORDER BY … DESC 語句的優化中 |
| Handler_read_rnd | 通過固定的位置讀取一行數據的次數;越低越好; 通常在需要對結果排序時,此值會比較高; 表明可能存在全表掃描或者不恰當的join |
| Handler_read_rnd_next | 通過直接讀取數據文件獲取下一行數據的次數;越低越好; 通常在進行數據掃描時,此值會比較高;// TODO 通常表明索引設置不當或者查詢未有效利用索引; |
| Handler_write | 向表中插入數據的次數; 在生成臨時表的查詢中,此值表示臨時表的數據量大小; |
2. 通過查看PROFILE獲取更多信息
Mysql 的profile保存了當前會話若干語句在執行時所使用資源的情況,通過會話級的參數profiling控制是否保存profile信息,可以通過以下語句打開(下述的方法將在將來的版本中不再支持,官方建議通過Performanc Schema進行替代):
set profiling=1;
打開會話profile后執行語句,mysql會保留該信息,可以通過show profiles查看目前記錄了profile信息的查詢,以query_id標識順序。然后可以通過如下語句獲取某條語句的profile信息:
show profile (cpu) for query query_id;
示例的結果如下,duration列出各階段耗時,CPU_user及CPU_system分別列出用戶態和系統態的CPU耗時。
| Status | Duration | CPU_user | CPU_system |
| starting | 0.000044 | 0 | 0 |
| checking permissions | 0.000005 | 0 | 0 |
| Opening tables | 0.000019 | 0 | 0 |
| init | 0.000009 | 0 | 0 |
| System lock | 0.000054 | 0 | 0 |
| optimizing | 0.000035 | 0 | 0 |
| statistics | 0.000012 | 0 | 0 |
| preparing | 0.000009 | 0 | 0 |
| executing | 0.000002 | 0 | 0 |
| Sending data | 0.014502 | 0.024 | 0 |
| end | 0.000012 | 0 | 0 |
| query end | 0.000005 | 0 | 0 |
| closing tables | 0.000009 | 0 | 0 |
| freeing items | 0.000155 | 0 | 0 |
| cleaning up | 0.000014 | 0 | 0 |
轉載于:https://www.cnblogs.com/luojiahu/p/10889957.html
總結
以上是生活随笔為你收集整理的获取Mysql语句执行时的详细信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关联分析(二):关联模式的评估
- 下一篇: 8年程序员210天没找到工作,小公司老板