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