面试题答案
一键面试通过MySQL慢查询日志定位性能问题的步骤
- 开启慢查询日志:确保慢查询日志功能已开启。
- 分析日志内容:日志中记录了执行时间超过设定阈值的SQL语句,仔细查看这些语句,关注查询条件、连接操作、排序等部分,判断是否存在不合理的索引使用、全表扫描等情况。
- 结合EXPLAIN分析:对慢查询日志中的SQL使用
EXPLAIN
关键字,查看查询执行计划,进一步确定性能瓶颈,如索引是否生效、扫描行数是否过多等。
慢查询日志相关配置参数
- slow_query_log:是否开启慢查询日志,取值为0(关闭)或1(开启)。
- slow_query_log_file:慢查询日志文件的路径及文件名。
- long_query_time:慢查询时间阈值,单位为秒,超过此时间的SQL语句会被记录到慢查询日志。
- 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