1. 程式人生 > >MySQL的慢查詢日誌

MySQL的慢查詢日誌

簡介

慢查詢定義為執行時間超過long_query_time的查詢,預設為10秒。

預設情況下,僅記錄非管理語句以及使用索引的查詢。在日誌中包含沒有索引的查詢(無論花費多少時間)都特別有用,並且使用log_queries_not_using_indexes設定進行設定。將不記錄對包含0行或1行的表的查詢。

該日誌包含執行時間超過long_query_time秒的SQL查詢,預設為10秒,以及必須檢查超過min_examined_row_limit行的查詢。獲取鎖的時間不包括在此計算中,只有解決查詢的時間。

開啟方式

寫在配置檔案中

修改配置檔案/etc/my.cnf中的mysqld配置項

slow_query_log=ON   #開啟慢查詢日誌
slow_query_log_file=slow_query.log  #慢查詢日誌檔名

在MySQL內部啟動

下面2種方式都可以開啟

mysql> set @@global.slow_query_log=on;
mysql> set global slow_query_log=on;

檢視

慢查詢日誌是是文字格式的,所以可以用tail,head,vim,cat等文字編輯工具檢視。也可以用mysqldumpslow工具通過彙總資訊來簡化該過程。

當然了也可以在mysql內部檢視,方法如下

mysql> SELECT * FROM mysql.slow_log  \G

相關的常用變數

  • log_slow_queries={ON|OFF} 不推薦使用–log-slow-queries選項,並在MySQL 5.6中刪除它(以及log_slow_queries系統變數)。 而是使用–slow_query_log選項啟用慢查詢日誌,使用–slow_query_log_file = file_name選項設定慢查詢日誌檔名。
  • slow_query_log={ON|OFF} 開啟慢查詢日誌
  • slow_query_log_file= 慢查詢日誌檔名
  • log_output={FILE|TABLE|NONE} 儲存在檔案/表/NONE中
  • log_slow_filter=admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk 慢查詢日誌過濾的型別