用途:诊断并解决 TiDB 查询性能问题,按从症状识别到验证修复的流程执行。
主要能力:用 EXPLAIN ANALYZE <query> 获取真实执行统计,对比 estRows 与 actRows 判断统计信息是否陈旧或缺失;用 PLAN REPLAYER DUMP EXPLAIN [ANALYZE] <query>; 导出 ZIP 现场信息;通过 TiDB HTTP API(端口 10080)的 /debug/pprof、/stats/dump/{db}/{table}、/schema/{db}/{table} 拉取运行时信息;用 SHOW GLOBAL BINDINGS; 检查计划基线。
统计信息检查:SHOW STATS_HEALTHY WHERE Db_name = '<db>' AND Table_name = '<table>';,健康度低于 80 或行数偏差大时执行 ANALYZE TABLE <table>; 或 ANALYZE TABLE <table> INDEX <index_name>;。
修复顺序:优先最小侵入,依次为刷新统计信息、加索引、SQL Binding、hint、会话变量。Binding 示例:CREATE GLOBAL BINDING FOR <stmt> USING <hinted_stmt>;。全局 Binding 无批量删除接口,禁止直接 DELETE mysql.bind_info,应使用 DROP GLOBAL BINDING ...;若已直接删除,可重启 TiDB 清空缓存。
高 CPU 场景:以 clinic-api 为默认入口,缺失时要求提供 CPU profile、查询历史、计划、TopSQL、statement summary 与慢查询样本;对比问题窗口与基线窗口 CPU profile,结合多证据源交叉验证后再下结论。
适用场景:慢计划、连接策略或探测索引选错、子查询、索引缺失、统计信息陈旧、TiFlash 分析加速等。
限制:需有 TiDB 环境与对应权限;高 CPU 结论需统计验证;报告缺陷前须匿名化敏感信息;升级前先用 TiUP playground 复现。部分细分主题依赖 references 目录中的参考文档。