高性能MySQL--慢查询日志

慢查询日志可帮助定位可能存在的SQL语句,从而进行SQL语句层面的优化。例如,可以在MySQL启动时设置一个阈值,将运行时间超过该值的SQL语句都记录到日志文件中。

开启

在默认情况下,MySQL并不启动慢查询日志,需要手动将这个给参数设置为ON:
查看:show variables like ''slow_query_log;
开启:set global slow_query_log=1;
注意

  1. 使用 set global slow_query_log=1; 开启了慢查询日志只对当前数据库生效,如果MySQL重启后则会失效。
  2. 如果要永久生效,就必须修改配置文件my.cnf。
将下面两行配置进my.cnf
slow_query_log = 1
slow_query_log_file = /var/lib/mysql/xxxx.log(慢查询日志的存放路径)

设置阈值

慢查询的阈值是由参数long_query_time控制,在默认情况下long_query_time的值为10秒。
查看:show variables like 'long_query_time%';
修改:set global long_query_time=3;
注意:

  1. 加入运行时间等于long_query_time的情况,并不会记录下来。必须大于long_query_time才会被记录

日志分析工具mysqldumpslow

参数说明:

  • s:是表示按照何种方式i排序:
  • c:访问次数
  • l:锁定时间
  • r:访问记录
  • t:查询时间
  • al:平均锁定时间
  • ar:平均返回记录数
  • t:即为返回前面多少条数据
  • g:后面搭配一个正则表达式,大小写不敏感

常用语句:

  1. 得到返回记录集最多的10个SQL语句
mysqldumpslow -s r -t 10 /var/lib/mysql/xxxx.log
  1. 得到访问次数最多的10个SQL语句
mysqldumpslow -s c -t 10 /var/lib/mysql/xxxx.log
  1. 得到按照时间排序的前10条里面含有左连接的查询语句
mysqldumpslow -s t -t 10 -g "left jion" /var/lib/mysql/xxxx.log
  1. 另外建议在使用这些命令时结合 | 和 more使用,否则有可能出现爆屏的情况
mysqldumpslow -s r -t 10 /var/lib/mysql/xxxx.log | more

你可能感兴趣的:(Mysql,mysql,数据库,sql)