標籤:linux mysql 慢查詢 錯誤
問題:
用網上找的開啟慢查詢日誌的方法:
在/etc/my.cnf中添加
long_query_time=1slow_query_loglog_queries_not_using_indexes=1
然後再重啟mysql。
慢查詢日誌確實開起來了,用select sleep(0.5),select sleep(1)來測試long_query_time的設定是生效的。但是在實際使用中在慢查詢記錄檔中出現了很多查詢時間在小於1s的記錄。
原因:
一、在mysql5.6英文手冊的“5.2.5 The Slow Query Log”中說慢查詢記錄的條件:
The query must either not be an administrative statement, or log_slow_admin_statements must be enabled.
The query must have taken at least long_query_time seconds, or log_queries_not_using_indexes must be enabled and the query used no indexes for row lookups.
The query must have examined at least min_examined_row_limit rows.
The query must not be suppressed according to the log_throttle_queries_not_using_indexes setting.
粗略地翻譯下:
查詢必詢不是管理語句,或者開啟了log_slow_admin_statements。
查詢的時間至少是long_query_time的秒數,或者查詢沒有使用索引並且開啟了log_queries_not_using_indexes。
查詢至少檢索了min_examined_row_limit 的行數.
查詢必要不會根據log_throttle_queries_not_using_indexes 的設定而被抑制。
二、在mysql5.5 中文參考手冊可以找到log-queries-not-using-indexes的說明:
如果你結合--log-slow-queries使用該選項,未使用索引的查詢也被記錄到慢查詢日誌中。
通過上面的資料就可以知道,因為開啟了log_queries_not_using_indexes造成後,未使用索引的查詢是否被記錄和slow_query_time的設定無關
解決辦法一:
修改/etc/my.cnf
log_queries_not_using_indexes=0
然後重啟伺服器。
解決辦法二:
在mySQL 查詢中執行
set global log_queries_not_using_indexes=0;
參考:
mysql5.5中文參考手冊
mysql5.6參考手冊
http://www.percona.com/forums/questions-discussions/mysql-and-percona-server/24075-long_query_time-not-working
本文出自 “閑潭小築” 部落格,請務必保留此出處http://soarwilldo.blog.51cto.com/5520138/1567702
mysql 5.6 設定long_query_time的值無效的原因