MySQL 开启慢查询日志与 mysqldumpslow 分析指南

Noah
Noah
发布时间:2026-10-14| 3人浏览过
原创

慢查询日志是分析和优化 MySQL 性能的重要工具,它能帮助开发者识别耗时过长或资源消耗巨大的 SQL 语句。本文将指导您如何在配置文件 my.cnf/my.ini 中开启慢查询功能,并演示如何使用 mysqldumpslow 命令高效分析日志内容。

开启慢查询日志配置

要启用慢查询日志,需编辑 MySQL 的配置文件。在 Windows 系统中文件名为 my.ini,Linux 系统通常为 my.cnf。请在文件的 [mysqld] 部分添加以下参数:

log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=2

第1步:指定日志路径

参数 log-slow-queries 用于定义慢查询日志的存储位置。若为空,MySQL 默认以主机名命名并附加 .log 后缀。建议设置为明确的绝对路径,例如 /var/lib/mysql/slowquery.log,并确保该目录对运行 MySQL 的用户(通常是 mysql)具有写权限。

第2步:设置查询时间阈值

参数 long_query_time 定义了记录查询的时间阈值(单位:秒)。上述示例中的 2 表示仅记录执行时间超过 2 秒的查询。可根据实际业务需求调整此数值。

第3步:可选配置 - 未索引查询记录

如果需要同时记录所有未使用索引的查询(无论执行时间长短),可在配置中加入:

log-queries-not-using-indexes

此选项有助于发现缺少索引或索引未被充分利用的 SQL,对性能优化极具价值。

慢查询日志结构解析

生成的慢查询日志包含详细的查询信息。典型条目结构如下:

# Time: 070927 8:08:52
# User@Host: root[root] @ [192.168.0.20]
# Query_time: 372 Lock_time: 136 Rows_sent: 152 Rows_examined: 263630
select id, name from manager where id in (66,10135);
  • Query_time: 查询执行总时间。
  • Lock_time: 等待锁的时间。
  • Rows_sent: 返回给客户端的行数。
  • Rows_examined: 服务器层检查的数据行数,值越大通常意味着效率越低。

使用 mysqldumpslow 分析日志

当日志文件庞大时,直接阅读效率低下。MySQL 自带的 mysqldumpslow 工具可对日志进行聚合与排序。该工具通常位于 mysql/bin/ 目录下。

mysqldumpslow --help

常用参数说明

  • -s ORDER:排序依据。可选值包括:
    - c:查询次数(count)
    - t:查询时间(time)
    - l:锁定时间(lock time)
    - r:返回行数(rows)
    - 前缀 'a' 表示降序排列,如 'at' 为按查询时间降序。
  • -t NUM:显示前 N 条结果。
  • -g PATTERN:正则匹配过滤,忽略大小写。
  • -v:显示详细模式。

第4步:执行分析命令示例

查询次数最多的 20 条 SQL:

mysqldumpslow -s c -t 20 /var/lib/mysql/slowquery.log

返回记录集最多的 20 条 SQL:

mysqldumpslow -s r -t 20 /var/lib/mysql/slowquery.log

查找含有 "left join" 且最耗时的前 10 条 SQL:

mysqldumpslow -t 10 -s t -g "left join" /var/lib/mysql/slowquery.log

通过这些命令,您可以快速从海量日志中提取出最需要优化的关键 SQL 语句。

总结

开启慢查询日志并定期使用 mysqldumpslow 进行分析,是保障 MySQL 数据库高性能运行的基础手段。通过合理设置阈值和关注关键指标(如 Rows_examined),能够有效定位性能瓶颈。

以上就是 MySQL 开启慢查询日志及利用 mysqldumpslow 进行分析的详细内容,更多关于 MySQL 数据库优化与维护的资料请关注本站其它相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。