MYSQL慢日志

MySQL的慢查询日志(Slow Query Log)可以帮助数据库管理员识别执行时间较长的SQL语句。通过分析这些慢查询,可以发现性能瓶颈并采取相应的优化措施。

启用慢查询日志,需要在MySQL配置文件(通常是my.cnfmy.ini)中设置相关参数,或者直接在运行时使用SET命令来修改。

复制代码
mysql> show variables like '%slow_query_log%';
+---------------------+-----------------------------------------+
| Variable_name       | Value                                   |
+---------------------+-----------------------------------------+
| slow_query_log      | OFF                                     |
| slow_query_log_file | D:\develop\...\LAPTOP-3JODIVUS-slow.log |
+---------------------+-----------------------------------------+
2 rows in set, 1 warning (0.02 sec)

mysql> show variables like '%long_query%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set, 1 warning (0.00 sec)

配置文件设置

复制代码
[mysqld]
slow_query_log = 1  # 开启慢查询日志
slow_query_log_file = /path/to/your/slow-query.log  # 指定日志文件路径
long_query_time = 2  # 设置阈值,默认单位是秒
log_queries_not_using_indexes = 1  # 记录没有使用索引的查询
  • slow_query_log:开启慢查询日志功能。
  • slow_query_log_file:指定慢查询日志文件的存储位置。
  • long_query_time:定义了查询需要多长时间才被记录到慢查询日志中。默认单位是秒,也可以设置为毫秒。
  • log_queries_not_using_indexes:如果设置为1,那么所有不使用索引的查询都将被记录,无论它们是否超过了long_query_time

运行时设置

在 MySQL 服务器运行时通过 SQL 命令临时更改设置

复制代码
# 全局开启
SET GLOBAL slow_query_log = 'ON';
# 指定路径和名称
SET GLOBAL slow_query_log_file = 'D:\\slow-query-log.log';
# 调整时间阈值
SET GLOBAL long_query_time = 3;
# 记录未使用索引的查询
SET GLOBAL log_queries_not_using_indexes = 'ON';

查看和分析慢查询日志

一旦开启了慢查询日志,并且有一些慢查询被记录下来后,可以使用文本编辑器打开日志文件查看内容。通常会使用一些专门的工具来分析这些日志,例如mysqldumpslowpt-query-digest(Percona Toolkit的一部分)等。

  • mysqldumpslow:MySQL 自带的简单工具,可以用来汇总慢查询日志中的数据。
  • pt-query-digest:更强大的工具,可以从慢查询日志中提取出详细的统计信息,并生成报告。

相关命令:

复制代码
//查看慢查询日志是否开启
SHOW VARIABLES LIKE '%slow_query_log%';
//查看时间阈值:
SHOW VARIABLES LIKE 'long_query_time%';
相关推荐
xxjj998a9 分钟前
Laravel6.x核心特性全解析
数据库·mysql·adb
yoyo_zzm9 小时前
Laravel9.x新特性全解析
数据库·mysql·nginx
oldking呐呐15 小时前
MySQL从建库到删库跑路 -- 4.表的操作
后端·mysql
qq_2837200516 小时前
Python3 模块精讲:pymysql(第三方)- 连接 MySQL
mysql·adb·pymysql
czlczl2002092516 小时前
MySQL 性能优化:前缀索引(Prefix Index)深度解析
数据库·mysql·性能优化
y = xⁿ17 小时前
MySQL八股知识合集
android·mysql·adb
计算机安禾18 小时前
【Linux从入门到精通】第33篇:数据库MySQL/MariaDB安装与基础调优
linux·数据库·mysql
tang&18 小时前
【MySQL】索引创建与B+树原理:MySQL性能优化的核心一课
b树·mysql·性能优化
sitellla19 小时前
MySQL 入门:最流行的开源关系型数据库介绍
数据库·mysql·其他·开源
2301_8084143819 小时前
MySQL表的约束
数据库·mysql