慢查詢的定義
- MySQL可以記錄所有執(zhí)行操作long_query_time參數(shù)設(shè)定的時(shí)間閾值的SQL語(yǔ)句的日志--滿查詢?nèi)罩?。該日志能為SQL語(yǔ)句的優(yōu)化帶來(lái)很好的幫助
- 默認(rèn)情況下,慢查詢?nèi)罩臼顷P(guān)閉的,要使用慢查詢?nèi)罩竟δ埽紫纫_啟慢查詢?nèi)罩竟δ?/li>
啟動(dòng)慢查詢?nèi)罩?/h2>
-
常用配置
- slow_query_log 啟動(dòng)停止記錄慢查詢?nèi)罩?/li>
- slow_query_log_file 指定慢查詢?nèi)罩镜拇鎯?chǔ)路徑及文件(默認(rèn)和數(shù)據(jù)文件放在一起)
- long_queries_not_using_indexes 是否記錄未使用索引的SQL
- log_output 日志存放的位置
-
查看慢查詢?nèi)罩拘畔? `SHOW VARIABLES LIKE '%slow_query_log%'
開啟慢查詢?nèi)罩荆?SET GLOBAL slow_query_log = 1;
關(guān)閉慢查詢?nèi)罩荆?SET GLOBAL slow_query_log = 0;
慢查詢?nèi)罩镜膬?nèi)容
常用配置
- slow_query_log 啟動(dòng)停止記錄慢查詢?nèi)罩?/li>
- slow_query_log_file 指定慢查詢?nèi)罩镜拇鎯?chǔ)路徑及文件(默認(rèn)和數(shù)據(jù)文件放在一起)
- long_queries_not_using_indexes 是否記錄未使用索引的SQL
- log_output 日志存放的位置
查看慢查詢?nèi)罩拘畔? `SHOW VARIABLES LIKE '%slow_query_log%'

開啟慢查詢?nèi)罩荆?SET GLOBAL slow_query_log = 1;
關(guān)閉慢查詢?nèi)罩荆?SET GLOBAL slow_query_log = 0;

| 行號(hào) | 內(nèi)容 |
|---|---|
| 1 | 用戶名、用戶的IP信息、線程ID號(hào) |
| 2 | 執(zhí)行花費(fèi)的時(shí)間 |
| 3 | 執(zhí)行獲得鎖的時(shí)間 |
| 4 | 獲得的結(jié)果行數(shù) |
| 5 | 掃描的數(shù)據(jù)行數(shù) |
| 6 | SQL執(zhí)行的具體時(shí)間 |
| 7 | 具體的SQL語(yǔ)句 |
慢查詢分析工具-mysqldumpslow
匯總除查詢條件外其他完全相同的SQL,并將分析結(jié)果按照參數(shù)中所指定的順序輸出
語(yǔ)法
mysqldumpslow -s r-t 10 slow-mysql.log
-s order (c, t, l, r, at, al, ar)
c:總次數(shù)
t:總時(shí)間
l:鎖的時(shí)間
r:總數(shù)據(jù)行
at,al,ar : t,l,r 平均數(shù) 【例如:at = 總時(shí)間 / 總次數(shù)】
-t top 指定取前面幾天作為結(jié)果輸出

mysqldumpslow結(jié)果樣例
慢查詢分析工具 - pt_query_digest
-
pt_query_digest可以遠(yuǎn)程的分析慢查詢?nèi)罩拘畔?/p>
-
匯總信息
總的查詢時(shí)間(Exec time)
總的鎖定時(shí)間(Lock time)
總的獲取數(shù)據(jù)量(Rows sent)
掃描的數(shù)據(jù)量(Rows examine)
-
查詢大?。≦uery size)
匯總信息 Response: 總的響應(yīng)時(shí)間
time:該查詢?cè)诒敬畏治鲋锌偟臅r(shí)間占比
calls:執(zhí)行次數(shù),即本次分析總共有多少條這種類型的查詢語(yǔ)句
R/Call:平均每次執(zhí)行的響應(yīng)時(shí)間
Item:查詢對(duì)象

Profile
- 執(zhí)行計(jì)劃


