MySQL慢查询日志的启动、查看和删除(附带实例)
MySQL 中的慢查询日志是记录查询时长超过指定时间的日志,它可以记录执行时间较长的查询语句。通过慢查询日志,可以找出执行时间较长、执行效率较低的语句,然后进行优化。
启动慢查询日志时,需要在 my.ini 或者 my.cnf 文件中配置 long_query_time 选项指定记录阈值,如果某条查询语句的查询时间超过了这个值,这个查询过程将被记录到慢查询日志文件中。
在 my.ini 或者 my.cnf 开启慢查询日志的配置如下:
在慢查询日志中,记录着执行时间较长的查询语句,用户可以获取这些执行效率较低的查询语句,为查询优化提供重要的依据。
【实例】查看慢查询日志。使用文本编辑器打开数据目录下的 Kevin-slow.log 文件,文件部分如下:
提示,借助慢查询日志分析工具,可以更加方便地分析慢查询语句。比较著名的慢查询工具有 MySQL Dump Slow、MySQL SLA、MySQL Log Filter、MyProfi。关于这些慢查询分析工具的用法,可以参考相关软件的帮助文档。
删除后在不重启服务器的情况下,需要执行
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
- path 为日志文件所在目录路径;
- filename 为日志文件名。如果不指定目录和文件名称,默认存储在数据目录中,文件为 hostname-slow.log,hostname 是 MySQL 服务器的主机名。
- 参数 n 是时间值,单位是秒。如果没有设置 long_query_time 选项,默认时间为 10 秒。
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
语句重建日志文件。