1.通過用戶反饋獲取存在性能問題的SQL.
2.通過慢查日志獲取存在性能的SQL.
啟動慢查日志
slow_query_log=on
set global slow_query_log=on;
slow_query_log_file 指定慢查日志存儲路徑及文件
默認情況保存在mysql的數據目錄中,最好日志存儲和數據存儲分開。
long_query_time
指定記錄慢查日志SQL執行時間的閥值,單位為秒,默認值為10秒。精確到微秒,
如果為一毫秒這個值為 0.001 。
記錄的語句包括
1.查詢語句
2.數據修改語句
3.已經回滾的SQL
log_queries_not_using_indexes 是否記錄未使用索引的SQL
慢查日志中記錄的內容:
第一行記錄了:
用戶信息,線程ID號 用戶信息 sbtest ,線程ID為 17
第二行 :記錄了查詢時間
第三行 :鎖的時間
第四行 : 返回的記錄行數
第五行: 掃描的行數
第六行 : 執行的時間
第七行 : 執行的語句
常用慢查詢日志分析工具
1.mysqldumpslow
匯總除查詢條件外其他完全相同的SQL,並將分析結果按照參數中指定的順序輸出。
mysqldumpslow –s r –t 10 slow.log
-s order (c,t,l,r,at,al,ar)
c: 總的次數
t:總的時間
l:鎖的時間
r: 總數據行
at,al,ar: t,l,r 的平均數
at 總時間 /總次數
-t top 指定取前幾條作為結果輸出
2.pt-query-digest
pt-query-digest –explain -h=127.0.0.1,u=root,p=root slow.log>slow.report
可以包括執行計劃。
3.實時獲取性能的問題的SQL
select id,user,host,db,command ,time,state,info from information_schema.processlist where time>60;
查詢服務器中查詢時間超過60秒的SQL.