← ClaudeAtlas

diag-mysql-slow-querylisted

MySQL 慢查询全链诊断。开启/分析 slow query log,定位 Top-N 慢 SQL, 用 EXPLAIN 检查执行计划,识别缺失索引、全表扫描、大结果集、锁等待, 输出结构化报告与优化建议。支持 MySQL 5.7+ 与 8.0 performance_schema。
seed-forge/harness-ai-kit · ★ 22 · API & Backend · score 74
Install: claude install-skill seed-forge/harness-ai-kit
# MySQL Slow Query Full-Chain Diagnostics ## 用途 当用户报告查询慢、接口超时、或怀疑 SQL 性能问题时触发。覆盖: - 接口响应变慢,怀疑数据库层 - `SHOW PROCESSLIST` 看到大量 `Sending data` / `Waiting for table metadata lock` - 慢查询日志告警 - 定期慢 SQL 巡检 本技能是**自包含诊断 Runbook**。 ## 输入 - MySQL 连接信息(host / port / user / password) - 可选:已知慢 SQL 片段或时间段 ## 输出 - 慢查询分析报告(填充输出模板) - Top-N 慢 SQL + EXPLAIN 结果 + 优化建议 ## 前置条件 | 项 | 要求 | |----|------| | MySQL 权限 | `PROCESS`, `SELECT`(performance_schema) | | 版本 | MySQL 5.7+(8.0 优先用 performance_schema) | ## 诊断步骤 ### Step 1: 检查慢查询日志配置 ```sql SHOW VARIABLES LIKE 'slow_query_log'; -- 是否开启 SHOW VARIABLES LIKE 'slow_query_log_file'; -- 日志路径 SHOW VARIABLES LIKE 'long_query_time'; -- 阈值(秒) SHOW VARIABLES LIKE 'log_queries_not_using_indexes'; -- 是否记录无索引查询 SHOW VARIABLES LIKE 'min_examined_row_limit'; ``` 如果未开启,建议临时开启(需 SUPER 权限): ```sql SET GLOBAL slow_query_log = ON; SET GLOBAL long_query_time = 1; SET GLOBAL log_queries_not_using_indexes = ON; ``` ### Step 2: 从 performance_schema 获取 Top-N 慢 SQL(MySQL 8.0+) ```sql SELECT DIGEST_TEXT AS query_pattern, COUNT_STAR AS exec_count, ROUND(SUM_TIMER_WAIT / 1000000000000, 2) AS total_time_s, ROUND(AVG_TIMER_WAIT / 1000000000000, 4) AS avg_time_s, SUM_ROWS_EXAMINED AS rows_examined, SUM_ROWS_SENT AS rows_sent, SUM_NO_INDEX_USED AS no_index_count, FIRST_SEEN, LAST_SEEN FROM performance_schema.events_statements_summary_by_digest WHERE SCHEMA_NAME IS NOT NULL AND DIGEST_TEXT NOT LIKE 'SHOW%' AND DIGEST_TEXT NOT LIKE '