利用慢查询日志进行SQL排查

  作者:记性不好的阁主

MySql版本:5.5


慢查询日志:MySQL提供的一种日志记录,用于记录MySQL种响应时间超过阀值的SQL语句 (long_query_time,默认10秒)

慢查询日志默认是关闭的;建议:开发调优是 打开,而 最终部署时 关闭



 检查是否开启了 慢查询日志 : show variables like '%slow_query_log%' ;


 临时开启

  set global slow_query_log = 1 ; --在内存种开启

  exit

  service mysql restart


 永久开启

  /etc/my.cnf 中追加配置:

  vi /etc/my.cnf

  [mysqld]

  slow_query_log=1

  slow_query_log_file=/var/lib/mysql/localhost-slow.log


 慢查询阈值

  show variables like '%long_query_time%' ;


 临时设置阈值

  set global long_query_time = 5 ; --设置完毕后,重新登陆后起效 (不需要重启服务)


 永久设置阈值

  /etc/my.cnf 中追加配置:

  vi /etc/my.cnf

  [mysqld]

  long_query_time=3

 select sleep(4);

 select sleep(5);

 select sleep(3);

 select sleep(3);

 --查询超过阀值的SQL: show global status like '%slow_queries%' ;

 查看具体的慢SQL


 方式一:慢查询的sql被记录在了日志中,因此可以通过日志 查看具体的慢SQL。

 cat /var/lib/mysql/localhost-slow.log

 方式二:通过mysqldumpslow工具查看慢SQL,可以通过一些过滤条件 快速查找出需要定位的慢SQL

 mysqldumpslow --help

 s:排序方式

 r:逆序

 l:锁定时间

 g:正则匹配模式

 --获取返回记录最多的3个SQL

  mysqldumpslow -s r -t 3 /var/lib/mysql/localhost-slow.log

 --获取访问次数最多的3个SQL

  mysqldumpslow -s c -t 3 /var/lib/mysql/localhost-slow.log

 --按照时间排序,前10条包含left join查询语句的SQL

  mysqldumpslow -s t -t 10 -g 'left join' /var/lib/mysql/localhost-slow.log


 语法:

  mysqldumpslow 各种参数 慢查询日志的文件


相关推荐

评论 抢沙发

表情

分类选择