Linux学习|Gentoo/Arch/FreeBSD

MySQL 慢查询日志

2020-03-21  本文已影响0人  不_悔

作者:闲不住的人

MySQL 慢查询日志的作用

在实际工作中,每个业务系统都离不开数据库,一个 简单的 SQL 语句却对性能有着极大的影响。SQL 优化也是作为一名运维工程师应该掌握的技能之一。通过慢查询日志,可以帮我们记录下那些执行时间大于我们所设定阈值的 SQL 语句。

配置 MySQL 慢查询日志

要查看当前 MySQL 实例是否已经开启了慢查询日志使用 show global variables like '%slow%';

查看mysql慢查询日志是否开启

默认情况下载安装完 MySQL 之后是没有启用慢查询日志的,要启用 MySQL 慢查询日志有两种方式,第一种是通过修改 my.cnf 配置文件,也是推荐的方式,不用担心重启实例后配置失效。第二种是在 MySQL 命令行通过 set global 方式设定,但是重启 MySQL 实例后会失效。

通过命令行开启 MySQL 慢查询日志

mysql> set global slow_query_log=ON; 

注意:使用 set global 设定启用慢查询日志,只在新的 MySQL 会话生效。

修改配置文件开启 MySQL 慢查询日志

在修改配置文件之前,先来了解几个参数的作用:

参数 作用
slow_query_log 是否开启慢查询日志
slow_query_log_file 配置慢查询日志文件名
long_query_time 设定慢查询阈值,运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。
min_examined_row_limit 扫描记录少于该值的 SQL 不记录到慢查询日志
log_queries_not_using_indexes 将没有使用索引的 SQL 记录到慢查询日志
log_throttle_queries_not_using_indexes 限制每分钟记录没有使用索引 SQL 语句的次数
log_slow_admin_statements 记录管理操作,如 ALTER/ANALYZE TABLE
log_slow_slave_statements 在从服务器上开启慢查询日志
log_timestamps 写入时区信息
log_output={FILE|TABLE|NONE} 慢查询日志格式
expire_logs_days=90

了解以上参数的作用之后我们就可以来修改 my.cnf 配置文件了,这些参数建议在 MySQL 安装之后就添加上。

[mysqld]
########log settings########
log_error = error.log
slow_query_log = 1
slow_query_log_file = slow.log
log_queries_not_using_indexes = 1
log_slow_admin_statements = 1
log_slow_slave_statements = 1
log_throttle_queries_not_using_indexes = 10
expire_logs_days = 90
long_query_time = 2
min_examined_row_limit = 100

修改一配置文件然后重启 mysql 服务就完成了。接下来执行一条 SQL 语句检查慢查询日志能否生效。

mysql> select sleep(4);
+----------+
| sleep(4) |
+----------+
|        0 |
+----------+
1 row in set (4.00 sec)

上面的 select sleep(4) 会睡眠 4 秒然后执行,接下查看 slow.log 日志中是否有记录存在。

查看mysql慢查询日志

mysqldumpslow 工具

mysqldumpslow 是 MySQL 自带的一个工具,专门用来查看慢查询日志。当你的 MySQL 慢查询过大时使用 vim 等编辑器打开非常的不便于查看,而且当同一条慢 SQL 反复被执行时会记录大量重复的记录,使用 mysqldumpslow 工具,可以帮我们将那些重复记录合并显示。

Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]

-s sort_type

如何对输出进行排序。的值 sort_type应从以下列表中选择:

t,at:按查询时间或平均查询时间排序

l,al:按锁定时间或平均锁定时间排序

r,ar:按已发送的行或已发送的平均行进行排序

c:按计数排序

-r 颠倒排序顺序;
mysqldumpslow执行结果

在上面执行结果中给出了如下信息:

微信搜一搜

阅读原文

上一篇 下一篇

猜你喜欢

热点阅读