什么是慢查询日志

MySQL的慢查询日志是 MySQL提供的一种日志记录,它用来记录在 MySQL 中响应时间超过阀值的语句,具体指运行时间超过long_query_time 值的 SQL,则会被记录到慢查询日志中

具体指运行时间超过 long_query_time 值的 SQL,则会被记录到慢查询日志中。long_query_time 的默认值为 10, 意思是运行 10 秒以上的语句

由它来查看哪些 SQL 超出了我们的最大忍耐时间值,比如一条SQL执行超过 5 秒钟,我们就算慢 SQL,希望能收集超过 5 秒的SQL,结合之前explain进行全面分析

默认情况下,MySQL 数据库没有开启慢査询日志,需要我们手动来设置这个参数。当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢査询日志支持将日志记录写入文件!

如何开启慢查询

查看开启状态

SHOW VARIABLES LIKE '%slow_query_log%'
set global slow_query_log = 1

如果要永久生效,就必须修改配置文件 my.cnf(其它系统变量也是如此)修改 my.cnf 文件,[mysqld]下增加或修改参数

slow_query_log 和 slow_query_log_file 后,然后重启 MySQL 服务器。也即将如下两行配置进my.cnf文件

slow_query_log =1slow_query_log_file=/var/lib/mysql/tim-slow.log

那么开启慢查询日志后,什么样的SQL参会记录到慢查询里面?

通过 show variables like ‘long_query_time%' 来查看默认时间长度,单位是秒:

同样的,可以使用命令修改,也可以在my.cnf里面配置。假如运行时间正好等于 long_query_time 的情况,并不会被记录下来。也就是说,在MySQL源码里是判断大于 long_query_time,而非大于等于!

设置记录的阈值:

set global long_query_time=3;

设置记录的阈值:

set global long_query_time=3;

接下来实行一个较慢的查询,如下图,但是记得要在配置文件中做如下配置:

接着去日志文件中查看存在哪些超过阈值的SQL就好了:

查询当前系统中有多少条慢查询记录:

记载一下我的配置文件

slow_query_log=1;slow_query_log_file=/var/lib/mysql/tim-slow.log;long_query_time=3;log_output=FILE
  • s:是表示按何种方式排序
  • c:访问次数
  • l:锁定时间
  • r:返回记录
  • t:查询时间
  • al:平均锁定时间
  • ar:平均返回记录数
  • at:平均查询时间
  • t:即为返回前面多少条的数据
  • g:后边搭配一个正则匹配模式,大小写不敏感的

下面是使用示例:

得到返回记录集最多的 10 个 SQL

mysqldumpslow -s r -t 10 /var/lib/mysql/tim-slowlog
mysqldumpslow -s c-t 10 /var/lib/mysql/tim-slow log
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/tim-slowlog
mysqldumpslow -s r -t 10 /var/lib/mysq/tim-slow.log | more

更多相关文章

  1. 深入Gradle插件开发
  2. [Innost]Android深入浅出之Binder机制
  3. Android(安卓)Studio 修改 Logcat 颜色
  4. 理解Android中垃圾回收日志信息
  5. Android深入浅出之Binder机制
  6. Android(安卓)sd卡log日志
  7. 从零开始--系统深入学习android(实践-让我们开始写代码-Android框
  8. anr日志
  9. android单元测试用例和日志输出

随机推荐

  1. android 修改谷歌拼音输入法全屏时的高度
  2. android apk的安装
  3. Android——gradle
  4. android 解决eclipse无法更新SDK问题
  5. Appium Windows 系统安装
  6. Android App Developers GUI Kits, Icons
  7. Android学习笔记——Android生命周期
  8. Android通过AES128加密解密字符串
  9. 将ffmpeg编译到android 源码
  10. Android中Context到底是什么以及用法