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表中)
posted @ 2018-03-04 15:56  gdwkong  阅读(775)  评论(0编辑  收藏  举报