1. 程式人生 > 其它 >7.SQL優化之慢日誌

7.SQL優化之慢日誌

思路:

  對於慢sql語句優化,一般會按照下面的幾個思路進行優化:開啟慢日誌,設定超過幾秒為慢sql語句(可以視情況),抓取sql語句,通過explain查詢執行計劃,對慢sql語句分析,建立索引並調整語句,再看執行計劃,對比調整結果

慢日誌:

  慢日誌記錄不僅有select語句,還有insert/delete/update等DML操作

  • slow_query_log:表示是否開啟慢查詢日誌
  • slow_query_log_file:當使用檔案儲存慢查詢日誌時(log_output設定為“FILE”或者“FILE TABLE”時),指定慢日誌儲存於哪個日誌檔案中。
  • log_query_time:表示“多長時間的查詢”被認定為“慢查詢”,預設是10秒
  • log_queries_not_using_indexes:表示如果執行的sql語句沒有使用到索引,是否也被當作慢查詢語句記錄到慢查詢日誌中
  • log_throttle_queries_not_using_indexes:可以限制這種語句每分鐘記錄到慢日誌中的次數,因為在生產環境中有可能有很多沒有使用索引的語句,此類語句頻繁地被記錄到慢查詢中,可能會導致慢查詢日誌快速不斷地增長,管理員可以通過此引數進行控制。

這裡介紹一些關於檢視慢日誌的小工具:mysqldumpslow

  主要的引數有:

  • -s 表示按照何種方式排序,c、t、l、r分別是按照記錄次數、時間、查詢時間、返回的記錄數來排序,ac、at、al、ar表示相應的倒序
  • -t是top n 的意思,即返回前面多少條資料
  • -g後邊可以寫一個正則匹配模式,大小寫不敏感。

 例如:mysqldumpslow -s r -t 20 :表示為得到返回記錄集最多的20個查詢

 另外如果有pt-query-digest命令檢視慢日誌的話,會顯示的更詳細。