贝利信息

SQL 如何定位慢 SQL?

日期:2026-01-19 00:00 / 作者:冰川箭仙
定位慢SQL需结合日志、性能视图与业务场景:开启慢查询日志并用mysqldumpslow分析;实时执行SHOW PROCESSLIST或查询performance_schema;对SQL用EXPLAIN看type/key/rows/Extra;再关联业务调用量、数据量变化、锁等待及历史趋势归因。

定位慢 SQL 的核心是找出执行时间长、资源消耗高或频繁执行的 SQL 语句,关键在于结合数据库日志、性能视图和实际业务场景来分析。

开启并查看慢查询日志

MySQL 默认不开启慢查询日志,需手动配置。在 my.cnf 中添加:

重启 MySQL 后,执行慢的 SQL 会自动写入日志。用 mysqldumpslow 工具快速汇总分析,例如:
mysqldumpslow -s t -t 10 /var/log/mysql/slow.log(按总执行时间排序,取前 10 条)

实时抓取正在运行的慢 SQL

适用于突发性慢查,来不及等日志积累。在 MySQL 中执行:

分析执行计划(EXPLAIN)

对疑似慢 SQL 执行 EXPLAIN,重点关注:

结合业务与监控做归因

单条 SQL 慢不等于问题根源,要关联上下文: