首页 > 编程笔记 > MySQL笔记 阅读:10

MySQL慢查询日志的启动、查看和删除(附带实例)

MySQL 中的慢查询日志是记录查询时长超过指定时间的日志,它可以记录执行时间较长的查询语句。通过慢查询日志,可以找出执行时间较长、执行效率较低的语句,然后进行优化。

MySQL启动和设置慢查询日志

MySQL中慢查询日志默认是关闭的,可以通过配置文件 my.ini 或者 my.cnf 中的 log-slow-queries 选项打开,也可以在 MySQL 服务启动的时候,使用 --log-slow-queries[=file_name] 启动慢查询日志。

启动慢查询日志时,需要在 my.ini 或者 my.cnf 文件中配置 long_query_time 选项指定记录阈值,如果某条查询语句的查询时间超过了这个值,这个查询过程将被记录到慢查询日志文件中。

在 my.ini 或者 my.cnf 开启慢查询日志的配置如下:
[mysqld]
log-slow-queries[=path / [filename] ]
long_query_time=n

MySQL查看慢查询日志

MySQL 的慢查询日志是以文本形式存储的,可以直接使用文本编辑器查看。

在慢查询日志中,记录着执行时间较长的查询语句,用户可以获取这些执行效率较低的查询语句,为查询优化提供重要的依据。

【实例】查看慢查询日志。使用文本编辑器打开数据目录下的 Kevin-slow.log 文件,文件部分如下:
C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe, Version: 8.0.28 (MySQL Community Server
- GPL). started with:
TCP Port: 3306, Named Pipe: MySQL
Time Id Command Argument
# Time: 181230 17:50:35
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 136.500000  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1314697835;
SELECT BENCHMARK(100000000, PASSWORD('newpwd'));
可以看到,这里记录了一条慢查询日志。执行该条查询语句的账户是 root@localhost,查询时间是 136.500000秒,查询语句是“SELECT BENCHMARK(100000000, PASSWORD('newpwd'));”,该语句的查询时间大大超过了默认值 10 秒钟,因此被记录在慢查询日志文件中。

提示,借助慢查询日志分析工具,可以更加方便地分析慢查询语句。比较著名的慢查询工具有 MySQL Dump Slow、MySQL SLA、MySQL Log Filter、MyProfi。关于这些慢查询分析工具的用法,可以参考相关软件的帮助文档。

MySQL删除慢查询日志

和通用查询日志一样,慢查询日志也可以直接删除。

删除后在不重启服务器的情况下,需要执行 mysqladmin -u root-p flush-logs 重新生成日志文件,或者在客户端登录到服务器执行 flush logs 语句重建日志文件。

相关文章