我们来看一下如何去读懂这些慢查询日志。
在跟踪慢查询日志之前,首先你得保证最少发生过一次慢查询。如果你没有可以自己制造一个:
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"
列表,之后就再也没有这种问题了。这样看来,对我们自己网站以及日志的监控是多么重要,即使是一星期对每个站点/服务器只进行一次快速检查。

读懂mysql慢查询日志的更多相关文章

  1. 看懂 MySQL 慢查询日志

    MySQL中的日志包括: 错误日志.二进制日志.通用查询日志.慢查询日志等等. 这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句. 2) ...

  2. 学会这 2 点,轻松看懂 MySQL 慢查询日志

    MySQL中的日志包括:错误日志.二进制日志.通用查询日志.慢查询日志等等.这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志. 1)通用查询日志:记录建立的客户端连接和执行的语句. 2)慢查 ...

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

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

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

    回顾前文: 一文学会MySQL的explain工具 一文读懂MySQL的索引结构及查询优化 (同时再次强调,这几篇关于MySQL的探究都是基于5.7版本,相关总结与结论不一定适用于其他版本) 就软件开 ...

  5. mysql慢查询日志相关参数

    -- mysql慢查询日志相关参数 -- 慢查询日志时间 show variables like "long_query_time"; -- 将时间设置为2s ; -- 是否开启慢 ...

  6. mysql慢查询日志分析工具 mysqlsla(转)

    mysql数据库的慢查询日志是非常重要的一项调优辅助日志,但是mysql默认记录的日志格式阅读时不够友好,这是由mysql日志记录规则所决定的,捕获一条就记录一条,虽说记录的信息足够详尽,但如果将浏览 ...

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

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

  8. ELK logstash 处理MySQL慢查询日志(初步)

    写在前面:在做ELK logstash 处理MySQL慢查询日志的时候出现的问题: 1.测试数据库没有慢日志,所以没有日志信息,导致 IP:9200/_plugin/head/界面异常(忽然出现日志数 ...

  9. MySQL慢查询日志

    实验环境: OS X EI Captian + MySQL 5.7 一.配置MySQL自动记录慢查询日志 查看变量,也就是配置信息 show (global) variables like '%slo ...

随机推荐

  1. Microsoft Excel 准确按照一页的宽度和高度打印

    设置 Microsoft Excel 准确按照一页的宽度和高度打印 Sheet1. VBA复制  With Worksheets("Sheet1").PageSetup  .Zoo ...

  2. [codevs3044][POJ1151]矩形面积求并

    [codevs3044][POJ1151]矩形面积求并 试题描述 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入 可能有多组数据,读到n=0为止(不超过15组) 每组数据第一行一个数n ...

  3. 数位dp 3943 二分法

    转载:http://blog.csdn.net/wdcjdtc/article/details/39177905 #include"cstdlib" #include"c ...

  4. bzoj5105 晨跑 数论lcm

    “无体育,不清华”.”每天锻炼一小时,健康工作五十年,幸福生活一辈子”在清华,体育运动绝对是同学们生活中 不可或缺的一部分.为了响应学校的号召,模范好学生王队长决定坚持晨跑.不过由于种种原因,每天都早 ...

  5. Linux rz的使用

    RZ是Linux提供的上传的命令,基于XMODEM/YMODEM/ZMODEM协议. 让我们来测试一下参数吧: 先准备一个文件,就叫test.txt吧,内容如下: one line rz -+  如果 ...

  6. 「CodePlus 2017 11 月赛」大吉大利,晚上吃鸡!

    n<=50000,m<=50000的图,给s和t,问有多少点对$(a,b)$满足 嗯. 不会. 首先最短路DAG造出来,然后两个条件转述一下:条件一,$N_a$表示从s到t经过a的路径,$ ...

  7. readdir() 获取文件类型

    readdir()获取文件类型 //// 字符设备文件 type =2, filename207=tty0 crw-rw----  1 root root     4,  0 04-10 16:28 ...

  8. 51 nod 1007 正整数分组 (简单01背包) && csu 1547: Rectangle

    http://www.51nod.com/onlineJudge/questionCode.html#problemId=1007&noticeId=15020 求出n个数的和sum,然后用s ...

  9. fetch各种报跨域错误,数据无法获取的解决方案

    1.介绍 fetch 提供了一个获取资源的接口 (包括跨域). fetch 的核心主要包括:Request , Response , Header , Body 利用了请求的异步特性 --- 它是基于 ...

  10. JAVA: 解决is expected to be of type but was actually of type com.sun.proxy.$Proxy的问题

    修改spring-config文件中的transactionManager部分为 <tx:annotation-driven proxy-target-class="true" ...