MST
星途 面试题库

面试题:MySQL性能监控工具之慢查询日志分析

请阐述如何通过MySQL慢查询日志来定位性能问题,以及慢查询日志相关的配置参数有哪些,并举例说明如何设置合理的慢查询时间阈值。
48.8万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

通过MySQL慢查询日志定位性能问题的步骤

  1. 开启慢查询日志:确保慢查询日志功能已开启。
  2. 分析日志内容:日志中记录了执行时间超过设定阈值的SQL语句,仔细查看这些语句,关注查询条件、连接操作、排序等部分,判断是否存在不合理的索引使用、全表扫描等情况。
  3. 结合EXPLAIN分析:对慢查询日志中的SQL使用EXPLAIN关键字,查看查询执行计划,进一步确定性能瓶颈,如索引是否生效、扫描行数是否过多等。

慢查询日志相关配置参数

  1. slow_query_log:是否开启慢查询日志,取值为0(关闭)或1(开启)。
  2. slow_query_log_file:慢查询日志文件的路径及文件名。
  3. long_query_time:慢查询时间阈值,单位为秒,超过此时间的SQL语句会被记录到慢查询日志。
  4. log_queries_not_using_indexes:是否记录未使用索引的查询,取值为0(不记录)或1(记录)。

设置合理慢查询时间阈值示例

一般来说,业务系统中,可先设置一个较为宽松的值,如long_query_time = 2,即执行时间超过2秒的SQL记录到慢查询日志。随着对系统性能的深入了解,可根据实际情况进行调整。例如,如果系统响应时间要求较高,多数业务操作需在1秒内完成,可将long_query_time调整为1,这样能更精准捕捉影响性能的SQL语句。

示例配置(在MySQL配置文件my.cnf中添加或修改以下内容):

[mysqld]
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow-query.log
long_query_time = 2
log_queries_not_using_indexes = 1