如何进行mysql慢查询日志设置以及日志管理与分析

1、引言

MySQL的慢查询日志是MySQL提供的一种日志记录功能,它用于记录在MySQL中响应时间超过设定阈值的SQL语句。

主要作用如下:

发现性能问题 :通过分析慢查询日志,可以找出执行时间较长的SQL语句,从而发现潜在的性能瓶颈。

优化查询性能 :基于慢查询日志的分析结果,可以对SQL语句进行优化,如添加索引、重写SQL语句等,以提高查询效率。

监控数据库健康:慢查询日志还可以用于监测数据库的运行状态,确保数据库的稳定性和高效性。

2、相关参数与配置

2.1、slow_query_log

slow_query_log:控制是否开启慢查询日志功能,默认值为OFF(关闭)。要启用慢查询日志,需要将其设置为ON。

查看慢查询日志功能是否开启,在mysql命令窗口执行:SHOW VARIABLES LIKE '%slow_query_log%'; 如下:

复制代码
mysql> SHOW VARIABLES LIKE '%slow_query_log%';
+---------------------+--------------------------------------+
| Variable_name       | Value                                |
+---------------------+--------------------------------------+
| slow_query_log      | OFF                                  |
| slow_query_log_file | /var/lib/mysql/92a08ceba24b-slow.log |
+---------------------+--------------------------------------+
2 rows in set (0.03 sec)

在命令窗口执行:set global slow_query_log = 1; 如下:

复制代码
mysql> set global slow_query_log = 1;
Query OK, 0 rows affected (0.07 sec)

再次执行SHOW VARIABLES LIKE '%slow_query_log%';如下:

复制代码
mysql> SHOW VARIABLES LIKE '%slow_query_log%';
+---------------------+--------------------------------------+
| Variable_name       | Value                                |
+---------------------+--------------------------------------+
| slow_query_log      | ON                                   |
| slow_query_log_file | /var/lib/mysql/92a08ceba24b-slow.log |
+---------------------+--------------------------------------+
2 rows in set (0.04 sec)

查询当前系统中有多少条慢查询记录,在命名窗口执行:show global status like '%Slow_queries%'; 如下:

复制代码
mysql> show global status like '%Slow_queries%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Slow_queries  | 0     |
+---------------+-------+
1 row in set (0.03 sec)

2.2、slow_query_log_file

指定慢查询日志文件的位置和名称。默认情况下,日志文件位于MySQL数据目录下,文件名通常为"主机名-slow.log"。

指定慢查询日志文件的位置和名称:/var/lib/mysql/localhost-slow.log,再次查看慢日志文件名称和位置已经改变,如下:

复制代码
mysql> SET GLOBAL slow_query_log_file = '/var/lib/mysql/localhost-slow.log';
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW VARIABLES LIKE '%slow_query_log%';
+---------------------+-----------------------------------+
| Variable_name       | Value                             |
+---------------------+-----------------------------------+
| slow_query_log      | ON                                |
| slow_query_log_file | /var/lib/mysql/localhost-slow.log |
+---------------------+-----------------------------------+
2 rows in set (0.09 sec)

2.3、long_query_time

定义查询执行时间的阈值,默认值为10秒。只有执行时间超过此阈值的SQL语句才会被记录到慢查询日志中。可以根据需要调整此参数的值,以捕获更多的慢查询。

查看当前慢查询阈值:SHOW VARIABLES LIKE 'long_query_time%';

复制代码
mysql> SHOW VARIABLES LIKE 'long_query_time%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.04 sec)

设置慢查询阈值:SET GLOBAL long_query_time = 5;

复制代码
mysql> SET GLOBAL long_query_time = 5;
Query OK, 0 rows affected (0.00 sec)

2.4、log_queries_not_using_indexes

决定是否记录未使用索引的查询,默认值为OFF(关闭)。开启此参数后,可以更容易地发现潜在的索引缺失问题,从而进行优化。

查询是否开启记录未使用索引的查询,如下:

复制代码
mysql> SHOW VARIABLES LIKE 'log_queries_not_using_indexes%';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.04 sec)

开启记录未使用索引的查询,如下:

复制代码
mysql> SET GLOBAL log_queries_not_using_indexes = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE 'log_queries_not_using_indexes%';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | ON    |
+-------------------------------+-------+
1 row in set (0.07 sec)
相关推荐
小蒜学长32 分钟前
校园社团招新网站的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·校园社团招新网站
机核研创社34 分钟前
短裤自动化工序与设备清单:十个点位、三项技术要点与选型裁决顺序
运维·自动化
尹人入圣36 分钟前
市面上IP驱动产业新场景新工具
运维·网络·python·tcp/ip
布莱克6052 小时前
MySQL 增删改查(CRUD)语法详解
数据库·mysql·增删改查
Dovis(誓平步青云)2 小时前
几个方案来回选不定?做一个随时切换的候选推荐页
android·java·服务器·开发语言·javascript·数据库·智能化
JieDavid2 小时前
奇智创达知识产权管理系统期限监控模块实操,告别人工期限疏漏,实现管理闭环!
大数据·运维·人工智能·经验分享·重构
工作10年+,存储芯片行业2 小时前
Linux NVMe 中断排查与性能优化:IRQ 优化(原理+排查)
linux·运维·性能优化·ssd·nvme·pcie·中断
2501_933670792 小时前
2027届大数据管理与应用求职数字化转型顾问:项目、SQL、业务理解怎么排优先级
数据库·sql
geats人山人海3 小时前
linux 1.目录结构
linux·运维·服务器
东方护航数据恢复(深圳)3 小时前
物流案例:勒索病毒 Mallox 加密 ERP 数据库,旧备份 + 残留页重组实录【东方护航数据恢复深圳店】
数据库·数据恢复·勒索病毒·二次开盘·开盘·数据镜像