天天看點

Mysql慢查詢

檢視慢查詢狀态

show variables like 'slow_query%'           

主要變量:

slow_query_log:表示是否開啟;

slow_query_log_file:表示儲存慢查詢資訊的檔案;           

開啟慢查詢

set global slow_query_log = on

或直接在配置檔案中開啟:

slow-query-log=on           

設定慢查詢存儲檔案

set global slow_query_log_file = '/var/lib/mysql/mysql_slow_query.log'

或直接在配置檔案中:

slow_query_log_file="/var/lib/mysql/mysql_slow_query.log"            

另外:

沒有命中索引的情況是否記錄到慢查詢檔案:
set global log_queries_not_using_indexes = on

查詢時間超過多長時間會進入慢查詢日志: 
set global long_query_time = 0.01 (機關秒)           

日志分析

Mysql慢查詢
Time :日志記錄的時間

User@Host:執行的使用者及主機

Query_time:查詢耗費時間 

Lock_time 鎖表時間 

Rows_sent 發送給請求方的記錄條數 

Rows_examined 語句掃描的記錄條數

SET timestamp 語句執行的時間點

select .... 執行的具體sql語句           

慢查詢日志分析工具

一般情況下直接vim或以文本工具打開日志檔案即可。mysql還提供了mysqldumpslow指令可以按條件篩選等。

Mysql慢查詢

-s表示排序依據,al表示按鎖表時間,ar表示按照發送條數,at表示按照查詢時間,相當于order by;

-t 顯示幾條記錄,相當于limit。

例如:mysqldumpslow -t 10 -s at /var/lib/mysql/mysql_slow_query.log