MySQL 慢查询日志

MySQL有一种日志,叫做慢查询日志,主要就是用来记录一些耗时的查询操作。通过这个日志我们就可以分析出哪些的操作是影响性能的,我们需要对其进行一些优化措施。

查看开启状态

上面的截图是我在 windows 下安装的 MySQL5.7 版本,我们可以发现,这个版本是开启了慢查询的。我在 CentOS6.9 下采用 yum 的方式安装的 MySQL5.7 默认没有开启慢查询日志。不管默认有没有给我们开启,我们是需要了解慢查询日志是如何开启的,开启的方式也非常简单。找到 MySQL 的配置文件,Windows 下是 my.ini,Linux 下的是 my.cnf。进行如下配置就可以了。

slow-query-log=1
 
 
slow_query_log_file="mysql-slow.log"
 
 
long_query_time=10

第一行是指定开启慢查询日志

第二行是指定慢查询日志的路径

第三行是指定查询时间大于多少的才进行记录,但是是毫秒,也就是操作大于 10ms 的操作都会被记录。

配置完毕之后要重启 MySQL 生效。

下面来看看慢查询日志的内容

C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe, Version: 5.7.16-log (MySQL
Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
TimeId CommandArgument
#Time: 2017-07-07T06:35:46.995201Z
#User@Host: root[root] @ localhost [::1]  Id:10
#Query_time: 12.522116 Lock_time: 0.000501 Rows_sent: 0 Rows_examined: 483968 use test;
SET timestamp=1499409346;
insert into test (id,name) (select uuid() id,name from test);
#Time: 2017-07-07T06:36:15.258316Z
#User@Host: root[root] @ localhost [::1]  Id:10
#Query_time: 24.543267 Lock_time: 0.000501 Rows_sent: 0 Rows_examined: 967936 SET timestamp=1499409375;
insert into test (id,name) (select uuid() id,name from test);
#Time: 2017-07-07T06:37:15.021922Z
#User@Host: root[root] @ localhost [::1]  Id:10
#Query_time: 56.283040 Lock_time: 0.000499 Rows_sent: 0 Rows_examined: 1935872 SET timestamp=1499409435;
insert into test (id,name) (select uuid() id,name from test);
#Time: 2017-07-07T06:40:07.866659Z
#User@Host: root[root] @ localhost [::1]  Id:10
#Query_time: 133.866927 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 3871744 SET timestamp=1499409607;
insert into test (id,name) (select uuid() id,name from test);

我们可以看到在 2017-07-07 日,有多个慢查询产生。单独抽取一组,如下

#Time: 2017-07-07T06:35:46.995201Z
#User@Host: root[root] @ localhost [::1]  Id:10
#Query_time: 12.522116 Lock_time: 0.000501 Rows_sent: 0 Rows_examined: 483968 use test;
SET timestamp=1499409346;
insert into test (id,name) (select uuid() id,name from test);

Query_time 表示的是耗时时间

下面是一些操作,这的主要操作就是一个 insert

这就是慢查询日志。

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏性能与架构

Mysql 5.7 主从复制的多线程复制配置方式

数据库复制的主要性能问题就是数据延时 为了优化复制性能,Mysql 5.6 引入了 “多线程复制” 这个新功能 但 5.6 中的每个线程只能处理一个数据库,所以...

2684
来自专栏用户2442861的专栏

线程池模型[初级版]

现在用户新增加任务worker3,首先调用pool_add_worker(),把worker3插入等待队列:如图

411
来自专栏运维前线

CentOS 7 配置Python语言开发环境

CentOS 7 配置Python语言开发环境 初始化设置参考:http://blog.csdn.net/wh211212/article/details/5...

23110
来自专栏程序员的诗和远方

Python报错: Unhandled exception in thread started by Error in sys.excepthook

今天要写个简单脚本,模拟同时50个用户往服务器上传东西。 就简单用 thread.start_new_thread(func, ()) 结果运行的时候报错: ...

30910
来自专栏开发与安全

linux环境常用的性能监控和协助开发调试工具

linux有诸多优秀的工具帮助我们分析服务器各项性能指标和协助开发调试工作。下面只列举比较基础的命令,且一般是集成在linux环境中而不需再次安装的...

3101
来自专栏Java帮帮-微信公众号-技术文章全总结

JavaWeb14-事务,连接池(Java正在的全栈开发)

? 事务&连接池 一.事务 1. 事务介绍 什么是事务 事务,一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元...

2504
来自专栏令仔很忙

手把手教你---进程资源分配

Markdown编辑器用的还不是太熟,表格中插入图片这事还没学会,纠结着在Word中总结了下,然后截个图放在下面供大家参考:

631
来自专栏小白安全

小白博客 MySQL备份和还原数据库常用的命令

备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backu...

3237
来自专栏蓝天

多写引发的思考

如果是3个Master,采用2PC保证一致性,单个Master故障,会导致不可写。如果正提交的是一个大数据,会造成较大影响。实际上,这个时候可以允许提交,在故障...

551
来自专栏乐沙弥的世界

MongoDB 索引创建

七、更多参考 MongoDB 单键(列)索引 MongoDB 复合索引 MongoDB 多键索引 MongoDB 执行计划获取(db.colle...

730

扫码关注云+社区