介绍
慢查询,是指一条sql的执行时间超过10s;这里的10s可以配置,设置为你想要的时间长度。名称上是慢"查询",但不光是查询,也对增加、修改、删除起作用。下面我们来看下相关sql。
查询、修改相关配置
show variables like 'slow_query_log%';
结果的第一行表示是否开启慢查询,第二行表示,开启后慢查询日志存放的路径。
show variables like 'long_query%';
这个long_query_time就是sql执行时间超过它,算是慢查询。
修改配置:
-- 开启慢查询
set global slow_query_log = 'on';
-- 设置日志存放的路径
set global slow_query_log_file = '日志存放的路径';
-- 超过3s
set @@long_query_time = 3;
上面的修改方式,mysql重启后会失效;要永久生效,在mysql安装目录下的my.cnf(windows中是my.ini)中添加:
slow_query_log = on
slow_query_log_file = /路径
long_query_time = 3
测试
select sleep(4);
然后到慢查询日志中查看,发现多出来:
排查
造成sql时间过长的原因有很多:
1.是否表数据量太大(考虑分库分表)
2.是否并发量过高
3.是否锁表
4.是否使用索引或索引没有生效
5.sql是否高效