我的mysql服务器配置了long_query_time = 2
,但我仍然看到在慢查询日志中报告的这些查询似乎很快:
# Time: 120730 5:06:41
# User@Host: <user> @ <Host> [<IP>]
# Query_time: 0.000412 Lock_time: 0.000060 Rows_sent: 5 Rows_examined: 5
SET timestamp=1343639201;
SELECT album_id FROM `TB_albums` where album_id!='res_4fe4333271bda7.42833845' and deleted is NULL order by `created_time` desc limit 5;
正如您所见,Query_time:0.000412 Lock_time:0.000060似乎低于2秒
您有什么想法会报告这些“快速”查询吗?
答案 0 :(得分:4)
log-queries-not-using-indexes
用于控制它。我可以从my.cnf的这个片段中看到我的关闭(通过评论)
# Here you can see queries with especially long duration
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
#log-queries-not-using-indexes
如果您无权访问my.cnf,可以使用SQL
mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF |
+-------------------------------+-------+
1 row in set (0.00 sec)
希望有所帮助!
克里斯
答案 1 :(得分:1)
检查变量log-queries-not-using-indexes
show variables like '%log_queries_not_using_indexes%';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF |
+-------------------------------+-------+
对于您的情况,它必须设置为OFF,如果为ON,则可以在log_queries_not_using_indexes = OFF
文件中设置my.cnf
,然后重新启动MySQL服务器。
答案 2 :(得分:0)
AFAIK MySQL测量从查询提交到获取阶段结束的数据获取查询的查询时间。这意味着,像
Start timer
Start fast SELECT query
Wait for result
Check timer and note time
sleep 2 seconds
fetch query results
Stop timer
将以noted time<2s
和end time>2s
结束,慢查询日志会在较长时间内触发。
答案 3 :(得分:0)
从manual,您需要检查与查询显示查询日志相关的其他配置。
服务器按以下顺序使用控制参数来确定是否将查询写入慢查询日志:
1.查询必须不是行政声明,或者 必须指定--log-slow-admin-statements。
2.查询必须至少使用long_query_time秒,或者必须启用log_queries_not_using_index并且查询不使用 行查找的索引。
3.查询必须至少检查过min_examined_row_limit行。
4.不得根据log_throttle_queries_not_using_indexes设置禁止查询。