检查 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

相关文章:

  • 2021-11-12
  • 2021-10-20
  • 2021-11-09
  • 2021-07-14
  • 2021-07-10
  • 2022-12-23
  • 2021-08-06
猜你喜欢
  • 2022-12-23
  • 2022-01-04
  • 2022-02-20
  • 2022-01-11
相关资源
相似解决方案