我们来看一下如何去读懂这些慢查询日志。
在跟踪慢查询日志之前,首先你得保证最少发生过一次慢查询。如果你没有可以自己制造一个:
root@server# mysql -e 'SELECT SLEEP(8);
上述操作所做的事情只有一个:"睡"(啥也不做)八秒。这个长度应该足以被记录在你的慢查询日志里了(我通常推荐针对长于 2 或 3 秒的查询进行慢查询记录)。
首先,我们看看一个慢速查询日志条目是什么样子的:
root@server# tail /var/log/slowqueries
# Time: 130320  7:30:26
# User@Host: db_user[db_database] @ localhost []
# Query_time: 4.545309  Lock_time: 0.000069 Rows_sent: 219  Rows_examined: 254
SET timestamp=1363779026;
SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';
我们来过一下每一行所代表的意思:

  • 第一行表示记录日志时的时间。其格式是 YYMMDD H:M:S。我们可以看出上面的查询记录于 2013 年 3 月 20 日上午 7:30 - 注意:这个是服务器时间,可能跟你本地时间有所不同
  • 然后,我们可以看到 MySql 用户、服务器以及主机名
  • 第三行表示总的查询时间、锁定时间、"发送"或者返回的行数、查询过程中所检查的行数
  • 接下来我们看到的是 SET timestamp=UNIXTIME; 这是查询实际发生的时间。如果你想找现在的一些慢查询,通过检查这个就不会发生你所检查的是几个月之前所发生的慢查询了。下边我会介绍如何将其变成一个有用的时间
  • 最后一行显示完整的查询语句

要将 Unix 时间转成一个人类可读的时间,可以使用 date -d 命令。输入 date -d @(记得要包括 @ 符号),然后在 @(之间没有空格)后粘贴日志中的时间戳:
root@server# date -d @1363779026
Wed Mar 20 07:30:26 EDT 2013
上面例子中我们可以看到查询进行的同时记录了该日志 - 但是对于一台超负载的服务器常常并非如此。因此记住:SET timestamp= value 才是实际的查询的执行时间。

现在我来演示一下我是如何使用 MySql 慢查询日志来解决我的某个网站上的一个真实问题的。你的查询可能与此不太一样,但是解决问题的原理是相通的。

我在一个博客网站上使用了一个名为 Tweet Blender 的插件来自动显示相关微博到我的关键字中。不幸的是,一些人发现了这个并使用我的微博中的关键字来发一些垃圾微博 - 不管怎样,最终结果就是我的博客网站上显示的是一些垃圾微博。因为相关微博在我的网站存在的时间并不长,所以我在网站上并没有发现什么问题,直到我查看慢查询日志。
我的网站对带有垃圾信息(垃圾信息常常都是一样的)的微博进行了几个类似的查询,经过一段时间后这些查询的数量太大以致其中的一些运行迟缓。当这种情况发生的时候,由于请求的数量非常大,有些朋友的网站很可能会因此假死或者直接报错,但是我的服务器经过很好的性能调优,因此并没有很明显的影响。幸运的是当时我正在进行慢查询日志查看,及时发现了这一情况并迅速解决了这个问题。
这个问题的解决很简单 - Tweet Blender 具备一个漂亮的过滤功能,我只需将该微博用户名以及一些垃圾关键字添加到 "exclude" 列表,之后就再也没有这种问题了。这样看来,对我们自己网站以及日志的监控是多么重要,即使是一星期对每个站点/服务器只进行一次快速检查。

转载于:https://www.cnblogs.com/matengfei123/p/7808667.html

读懂mysql慢查询日志相关推荐

  1. 学会读懂 MySql 的慢查询日志

    在前边的博客< 何时.如何开启 MySql 日志?>中,我们了解到了如何启用 MySql 的慢查询日志.今天我们来看一下如何去读懂这些慢查询日志. 在跟踪慢查询日志之前,首先你得保证最少发 ...

  2. 清理mysql慢查询日志_MySQL清理慢查询日志slow_log的方法

    一.清除原因 因为之前打开了慢查询,导致此表越来越大达到47G,导致磁盘快被占满,使用xtrabackup进行备份的时候文件也超大. mysql> show variables like 'lo ...

  3. 一篇文章读懂MySQL的各种联合查询

    一篇文章读懂MySQL的各种联合查询 联合查询是指将两个或两个以上的表的数据根据一定的条件合并在一起! 联合查询主要有以下几种方式: 全连接:将一张表的数据与另外一张表的数据彼此交叉联合查询出来 举例 ...

  4. mysql 默认事务隔离级别_一文读懂MySQL的事务隔离级别及MVCC机制

    回顾前文: <一文学会MySQL的explain工具> <一文读懂MySQL的索引结构及查询优化> (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论 ...

  5. MySQL 慢查询日志 使用方法浅析 日志定位与优化技巧

    目录 前言 1.如何开启使用慢查询日志? 1.1 开启慢查询日志 1.2 设置慢查询阈值 1.3 确定慢查询日志的文件名和路径 1.3.1 查询MySQL数据目录 1.3.2 查询慢查询日志文件名 1 ...

  6. 一文读懂 MySQL Explain 执行计划

    一.前言 上周老周的一个好朋友让我出一篇教你读懂 SQL 执行计划,和我另一位读者反馈的面试题如何排查慢 SQL 的强相关,索性先出一篇一文读懂 MySQL Explain 执行计划.Explain ...

  7. mysql慢查询日志在哪里

    如何查找MySQL中查询慢的SQL语句 你是指慢查询日志吗? 在my.ini中加上下面两句话 log-slow-queries=e:\mysql5.5\mysql_slow_query.log lon ...

  8. MySQL 慢查询日志分析及可视化结果

    MySQL 慢查询日志分析及可视化结果 MySQL 慢查询日志分析 pt-query-digest分析慢查询日志 pt-query-digest --report slow.log 报告最近半个小时的 ...

  9. mysql慢查询日志平时开启吗_MySQL开启慢查询日志功能的方法

    mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里是否有很耗费资源的sql语句,这是一个有用的日志.它对于性能的影响不大(假设所有查询都很快),并且强调了那些最需要注意的查询(丢失 ...

最新文章

  1. Network Manager碰到的问题
  2. 位运算02 - 零基础入门学习C语言65(完)
  3. ASP.NET %%,%=%,%#%区别
  4. 王道操作系统考研笔记——2.1.8 调度算法的评价指标
  5. 数据结构之内部排序算法总结笔记
  6. mysql怎么精简_我这个mysql查询该如何精简,提高效率啊?
  7. Git 看这一篇就够了!
  8. 最新实战讲解.htaccess文件rewrite规则
  9. script脚本中写不写$(document).ready(function() {});的差别
  10. linux sipp 呼叫转移_★★★★盲转接业务的sipp脚本实现
  11. 2022.6.28 JCR最新发布(期刊影响因子)
  12. 四波混频 matlab,四波混频(four-wave mixing)
  13. Qt - QLabel设置字体颜色
  14. java常用类库——util包
  15. csdn的博客专家:【前端领域新星创作者】认证成功了
  16. 乐华娱乐再度冲刺港股:业务高度依赖王一博 ​9个月经营利润降41%
  17. 人民币-美元-日元-港元-欧元汇率数据(1985-2019年)
  18. 深入剖析串口通信数据格式
  19. PHP多进程协作编程之-popen
  20. 伽卡他卡学生端的安装排错

热门文章

  1. zabbix企业应用之固定端口监控memcache
  2. 调查称谷歌占北美25%互联网流量
  3. Web Components系列(七) ——自定义组件的生命周期
  4. OnScrollListener
  5. linux手动安装rsync_Linux中安装使用rsync | 学步园
  6. NET USE 命令用法
  7. GeoTools——新建shapefile文件
  8. 好用的前端组件收集(ing)
  9. tensorflow 显存 训练_tensorflow手动指定GPU以及显存大小
  10. HIve内置函数(functions)使用和解析