检查 MySQL 慢查询的步骤备忘录
在创建应用程序时,我认为几乎所有与数据库的交互都会发生。
这是一种检查当时抛出的哪些查询是花费很长时间的查询(慢查询)的方法。
检查慢查询开/关
使用以下命令检查慢查询和日志输出目标的 ON/OFF。
mysql> show variables like 'slow_query%';
+---------------------+--------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /var/lib/mysql/f715b6ca7431-slow.log |
+---------------------+--------------------------------------+
2 rows in set (0.01 sec)
检查阈值
使用以下命令检查判断为慢的阈值(输出日志)。
mysql> show variables like 'long%';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)
慢查询设置
在配置文件或 mysql 命令中配置设置。
对于配置文件(my.cnf)
[mysqld]
slow_query_log_file=’/tmp/slow.log’
slow_query_log=1
long_query_time=0.5
通过命令设置时
mysql>set global slow_query_log_file='/tmp/slow.log';
mysql>set global slow_query_log=1;
mysql>set global long_query_time=0.5;
对了,如果mysqld执行用户对slow_query_log_file指定的路径没有写权限,就会报错。
mysql> set global slow_query_log=1;
ERROR 29 (HY000): File '/var/log/mysql/slow.log' not found (OS errno 2 - No such file or directory)
聚合三个查询
慢查询设置完成后,我们来实际试一下查询。
# 3秒スリープさせるクエリ
mysql> select sleep(3);
执行查询后,执行mysqldumpslow命令,显示聚合结果。mysqldumpslow 是命令,而不是查询。它不能在mysql内部执行。
该命令的选项是这里请参阅
$ mysqldumpslow -s t /tmp/slow.log
Reading mysql slow query log from /tmp/slow.log
Count: 1 Time=3.00s (3s) Lock=0.00s (0s) Rows=1.0 (1), root[root]@localhost
select sleep(N)
| 汇总结果 | 概述 |
|---|---|
| 数数 | 执行次数 |
| 时间 | 平均执行时间(累计) |
| 锁 | 锁定表的平均时间(累计) |
| 行 | 被操纵的平均记录数(累积) |
概括
到目前为止,我们可以看到哪些查询需要很长时间。
下一次,我们将使用 EXPLAIN 分析查询。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308623764.html