mysql 5.6 设置long_query_time的值无效的原因
問題:
用網上找的開啟慢查詢日志的方法:
在/etc/my.cnf中添加
long_query_time=1 slow_query_log log_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
轉載于:https://blog.51cto.com/soarwilldo/1567702
總結
以上是生活随笔為你收集整理的mysql 5.6 设置long_query_time的值无效的原因的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SSH 登录速度慢的解决办法
- 下一篇: linux cmake编译源码,linu