SQL优化(二)-- 慢查询
程序员文章站
2022-03-03 19:56:49
...
1.慢查询日志
MYSQL的慢查询日志是Mysql提供的一种日志记录方式,它主要是用来记录mysql执行语句过程中,响应时间超过阀值的语句,这个阀值可以通过long_query_time去指定,比如说如果我们将long_query_time指定为5,则意思执行耗时5秒以上的语句都会被我们的慢查询日志给记录下来.
2.慢查询日志的作用
通过使用慢查询日志,我们可以先捕获耗时的语句,然后再结合explain执行计划进行全面的分析,从而达到优化的目的
默认情况下,mysql数据库并没有开启慢查询日志,因为开启慢查询日志记录本身就需要消耗数据库服务器性能,需要我们手动来开启,如果不是专门做优化的话,不建议开启慢查询日志
3.开启慢查询
查看是否开启和如何开启慢查询日志
-- 查看
show variables like '%slow_query_log%';
--开启(注意:只是临时生效,数据库重启之后,失效)
set global slow_query_log=1;
--永久开启
-- 1.修改my.cnf文件,在[mysqld]下增加或修改参数
slow_query_log=1;
slow_query_log_file="文件路径/kaijun-slow.log"; (如果不指定这一行的话,系统默认会给一个默认文件名)
-- 2. 重启mysql服务器
设定慢查询日志的阀值
-- 查看当前阀值(默认是10s)
show global variables like 'long_query_time';
-- 设置阀值
long_query_time=秒数
-- 注意: 只有sql语句耗时大于long_query_time的语句才会被记录下来
调试语句
select sleep(秒数);
查看当前系统中慢查询出现的次数
show global status like '%Slow_queries%';
慢查询开启配置模版
slow_query_log=1
slow_query_log_file="文件路径/kaijun-slow.log"
long_query_time=秒数
log_output=file,table (日志输出到文件和mysql数据库中的slow_log表中)