在前边的博客《何时、怎样开启 MySql 日志?》中,我们了解到了怎样启用 MySql 的慢查询日志。

今天我们来看一下怎样去读懂这些慢查询日志。

在跟踪慢查询日志之前。首先你得保证最少发生过一次慢查询。假设你没有能够自己制造一个:

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 - 注意:这个是server时间,可能跟你本地时间有所不同

然后,我们能够看到 MySql 用户、server以及主机名

第三行表示总的查询时间、锁定时间、"发送"或者返回的行数、查询过程中所检查的行数

接下来我们看到的是 SET timestamp=UNIXTIME; 这是查询实际发生的时间。假设你想找如今的一些慢查询。通过检查这个就不会发生你所检查的是几个月之前所发生的慢查询了。下边我会介绍怎样将其变成一个实用的时间

最后一行显示完整的查询语句要将 Unix 时间转成一个人类可读的时间,能够使用 date -d 命令。

输入 date -d @(记得要包含 @ 符号),然后在 @(之间没有空格)后粘贴日志中的时间戳:

root@server# date -d @1363779026

Wed Mar 20 07:30:26 EDT 2013

上面样例中我们能够看到查询进行的同一时候记录了该日志 - 可是对于一台超负载的server经常并不是如此。

因此记住:SET timestamp= value 才是实际的查询的执行时间。

如今我来演示一下我是怎样使用 MySql 慢查询日志来解决我的某个站点上的一个真实问题的。

你的查询可能与此不太一样,可是解决这个问题的原理是相通的。

我在一个博客站点上使用了一个名为 Tweet Blender 的插件来自己主动显示相关微博到我的keyword中。不幸的是,一些人发现了这个并使用我的微博中的keyword来发一些垃圾微博 - 无论怎样,终于结果就是我的博客站点上显示的是一些垃圾微博。

由于相关微博在我的站点存在的时间并不长,所以我在站点上并没有发现什么问题。直到我查看慢查询日志。

我的站点对带有垃圾信息(垃圾信息经常都是一样的)的微博进行了几个相似的查询,经过一段时间后这些查询的数量太大以致当中的一些执行迟缓。

当这样的情况发生的时候,由于请求的数量非常大,有些朋友的站点非常可能会因此假死或者直接报错。可是我的server经过非常好的性能调优,因此并没有非常明显的影响。幸运的是当时我正在进行慢查询日志查看。及时发现了这一情况并迅速攻克了这个问题。

这个问题的解决非常easy - Tweet Blender 具备一个美丽的过滤功能。我仅仅需将该微博username以及一些垃圾keyword加入到 "exclude" 列表。之后就再也没有这样的问题了。这样看来,对我们自己站点以及日志的监控是多么重要,即使是一星期对每一个站点/server仅仅进行一次高速检查。

mysql 慢日志 逻辑读_学会读懂 MySql 的慢查询日志相关推荐

  1. mysql什么场景下要防止幻读_灵魂拷问,MySQL到底能否解决幻读问题

    先说结论,MySQL 存储引擎 InnoDB 在可重复读(RR)隔离级别下是解决了幻读问题的. 方法:是通过next-key lock在当前读事务开启时,1.给涉及到的行加写锁(行锁)防止写操作:2. ...

  2. mysql怎么定位错误信息_如何快速定位MySQL 的错误日志(Error Log)?

    日志文件是MySQL数据库的重要组成部分,包括有6种不同的日志文件: 错误日志: -log-err 查询日志: -log 慢查询日志: -log-slow-queries 更新日志: -log-upd ...

  3. worksheet怎么读_慢读RAZ分级阅读 宝藏资源worksheet

    前两篇分享了Quiz练习的内容和实操方法,下面来说说worksheet这部分. 分级阅读Reading A-Z (简称Raz),在教师账号里,每本书后都有一套完整的worksheet(图2),主要是帮 ...

  4. mysql 事务值被改变_面试被问MySQL 事务的实现原理,怎么破?

    Java面试笔试面经.Java技术每天学习一点 作者:小小木的博客 来源:https://www.cnblogs.com/wyc1994666/ 开篇 相信大家都用过事务以及了解他的特点,如原子性(A ...

  5. mysql更新一条语句_讲讲一条MySQL更新语句是怎么执行的?

    这是在网上找到的一张流程图,写的比较好,大家可以先看图,然后看详细阅读下面的各个步骤. 执行流程: 1.连接验证及解析 客户端与MySQL Server建立连接,发送语句给MySQL Server,接 ...

  6. MySQL导入冲突保留两者_面试被问MySQL 主从复制,怎么破?

    一.前言 随着应用业务数据不断的增大,应用的响应速度不断下降,在检测过程中我们不难发现大多数的请求都是查询操作. 此时,我们可以将数据库扩展成主从复制模式,将读操作和写操作分离开来,多台数据库分摊请求 ...

  7. mysql面向用户是什么意思_原来大厂的MySQL面试会问这些问题!

    1. 写出下面 2 个 PHP 操作 Mysql 函数的作用和区别(新浪网技术部) mysql_num_rows() mysql_affected_rows() 这两个函数都作用于 mysql_que ...

  8. mysql到pg怎么高效_干货 | Debezium实现Mysql到Elasticsearch高效实时同步(示例代码)

    题记 来自Elasticsearch中文社区的问题-- MySQL中表无唯一递增字段,也无唯一递增时间字段,该怎么使用logstash实现MySQL实时增量导数据到es中? logstash和kafk ...

  9. mysql增量备份具体步骤_记一次mysql全量备份、增量备份的学习过程

    增量备份依赖于全量备份,因此首先要有全量备份,在全量备份的基础上,添加增量备份. 为了方便操作,我们先来做些准备工作.在客户端直接输入mysql.mysqldump.mysqladmin.mysqlb ...

  10. 日志分类存放_博特智能|文本智能聚类——千万日志一览无余

    对于海量文本型数据比如日志,如何从中提取日志模式以便更快地从文本中获取关键信息.本文先简单介绍了行业竞品的相关产品形态,然后重点介绍了一种基于机器学习的日志智能聚类解决方案--基于图结构的聚类方法. ...

最新文章

  1. PPT资料下载 - 问题驱动的软件测试设计:强化测试用例设计
  2. cmake 指定编译器_我们需要懂得CMake文件
  3. SQL Server 2005: Constraints
  4. 如何在六个月或更短的时间内成为DevOps工程师(三):版本控制
  5. ELK下Logstash性能调优
  6. 检测到无效的异常处理程序例程。_异常控制流(1):异常概述和基本类型
  7. Android中的armeabi等如何适配
  8. 浙江大学软件工程c语言复试题库,2022浙江大学软件工程考研经验备考指导
  9. 微信公众号编辑有哪些实用的小工具和小技巧?
  10. 淘宝新版打标足迹在哪里浏览?
  11. 软件工程导论复试——一、软件工程学概述
  12. 添加背景音乐(visual stdio2019)
  13. aws mysql 多区_AWS RDS多可用区+EC2实例跑mysql从库的测试
  14. C - Cardboard Container Gym - 102007C(已知体积求表面积)
  15. 中国蚁剑(antSword)加载不出来!
  16. 系统级程序设计第二次作业
  17. 产品读书《必然:理解将塑造你的12种技术力量》KK
  18. 如何下载并安装Visual Studio
  19. golang colly踩坑笔记
  20. cuda C 编程权威指南 Grossman 第2章 CUDA编程模型

热门文章

  1. 李洪强iOS经典面试题34-求两个链表表示的数的和
  2. linux mkdir基础命令总结
  3. Android设置标题栏图标
  4. U盘安装Debian 6 amd64版本
  5. Life is not fair, get used to it.
  6. java 新建pdf_java-如何关闭PDF文件以重新创建它? (正在...
  7. pcie转sata3硬盘不启动_新品推荐:PCIe2.0转4口SATA3/6G扩展卡 SFF8087
  8. Cookie的简单理解和使用
  9. Spring Boot整合Druid的使用以及步骤
  10. idea报错:不支持发行版本5的错误,快速解决方案