MySQL資料庫中的日誌檔案---(3)慢查詢日誌

junsansi發表於2011-09-28

2.2 慢查詢日誌(The Slow Query Log)

  慢查詢日誌指的是,所有SQL執行時間超過long_query_time變數指定值的語句,以及達到min_examined_row_limit條記錄的語句。SQL語句執行時間不包含初始化表鎖的開銷。SQL語句執行完畢並且完成對其鎖定資源的釋放後,mysqld會將符合條件的SQL語句寫入慢查詢日誌,因此慢查詢日誌中語句記錄和順序有可能跟執行順序不同(執行時間也不同)。

  long_query_time引數預設值為10,單位為秒,在5.1.21版本中,最小值為0,號稱記錄到檔案時也能夠支援到微秒,不過微秒部分會被忽略,只有整數部分會記錄到表,在5.1.21版本之前,該引數值必須為整數,最小值為1。

  控制慢查詢日誌有下列方式:

      
  • 在5.1.6版本之前,慢查詢日誌是個檔案,要啟用慢查詢日誌,只需要在啟動mysqld時附加--log-slow-queries[=file_name]即可;
  •   
  • 從5.1.6版本開始,慢查詢日誌即可以是個檔案,也可以儲存在資料庫中的指定表,上條說的那個引數同樣好使,另外--log-output引數用來指定日誌的輸出目標(是檔案還是表,或者兩者都有);
  •   
  • 從5.1.12版本開始,另提供了--slow_query_log[={0|1}]指定是否輸出慢查詢日誌,指定為1時表示輸出,否則表示不輸出。
  •   
  • 從5.1.29版本開始,另提供了--slow_query_log_file=file_name指定日誌檔案輸出路徑,而之前的--log-slow-queries則被廢棄。

  如果沒有為慢查詢日誌指定檔名,則預設檔名為host_name-slow.log,儲存在data目錄下。

  慢查詢日誌可以用來檢視執行時間超出指定時間的SQL語句,並針對這部分語句重點調優,不過,檢視一個較大的慢查詢日誌極為不便,可以嘗試使用mysqldumpslow命令對慢查詢日誌進行分析,關於mysqldumpslow命令的用法可以參考相關章節。

  在5.1版本中,當指定--log-queries-not-using-indexes引數後,可以把沒有使用索引的查詢記錄到慢日誌,而不管其執行速度。啟用--log-slow-admin-statements選項可以記錄一些管理操作語句到慢查詢日誌,比如OPTIMIZE TABLE、ANALYZE TABLE、ALTER TABLE。

  需要注意的是,慢查詢日誌中有可能記錄到與使用者許可權或密碼相關的語句,因此慢查詢日誌檔案的儲存也要注意安全。
============================================
連載:

MySQL資料庫中的日誌檔案---(2)普通查詢日誌

MySQL資料庫中的日誌檔案---(1)錯誤日誌

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-708449/,如需轉載,請註明出處,否則將追究法律責任。

相關文章