如何在 MySQL 中监控和优化慢 SQL?
如何在 MySQL 中监控和优化慢 SQL?
回答重点
可以利用 MySQL 自带的 slow_query_log 来监控慢 SQL,它是 MySQL 提供的一个日志功能,用于记录执行时间超过特定阈值的 SQL 语句。
对于慢查询,再使用 EXPLAIN 分析执行计划,查看查询的执行顺序、使用的索引、扫描的行数等,以识别潜在的性能瓶颈。
基于 EXPLAIN 再进行针对性的优化,常见的优化方向有:
- 根据 EXPLAIN 的结果,检查是否有合适的索引。若缺失索引,则添加(特别是在 WHERE、JOIN 和 ORDER BY 子句中使用的列上)
- 将复杂的 JOIN 查询拆分成多个简单查询,尽量小表驱动大表
- 避免 SELECT * ,仅选择需要的字段
- 等等(更多可参考扩展中的 SQL 调优)
扩展知识
MySQL SQL 调优
MySQL 索引失效场景汇总
MySQL 慢 SQL 配置
在 MySQL 配置文件(通常是 my.cnf 或 my.ini)中添加或修改以下配置项:
1 | [mysqld] |
其中的 2.0 就是 2 秒,当一个 SQL 执行的时间超过 2 秒,就会被记录到慢日志中。
也可以通过 SQL 命令动态设置:
1 | SET GLOBAL slow_query_log = 'ON'; |
Comments