在 TiDB 集群中,执行一条复杂的 SQL 查询时发现执行速度很慢, 该从哪些维度排查慢查询的原因?并说明每个维度下具体的排查方法和常用命令 / 工具
先看慢查询日志,这块有执行计划,会显示每个算子执行效率
确保各表的统计信息准确、查询列是否有正确建立索引、是否可以通过分区表减小查询数据量、数据库与服务器参数设置是否合理、执行计划是否合理,复杂查询是否需要tiflash支撑,硬件性能是否有影响等等
执行计划发出来看看
有界面吗?
- SQL 执行计划分析; 2. 集群资源瓶颈排查;3. 数据分布与 TiKV 存储机制; 4. TiDB 核心机制与配置; 5. 业务场景与 SQL 本身; 6. TiDB 专属诊断工具;
1 个赞
直接发执行计划,explain analyze生成的
慢日志里找出关键的慢SQL,然后查看对应的执行计划确定性能瓶颈
1.看下执行计划里的成本和走索引的情况
2.看下information_schema里的slow_query表,排查下是否集群协作的问题
dashboard先看看执行计划吧。
analyze的生成发一下
先通过慢查询日志 / 系统表定位慢 SQL → 分析执行计划(是否走索引、扫描行数) → 排查集群资源 / TiKV 层问题 → 优化数据 / 配置;
执行计划的type(是否全表扫描)、rows_examined(扫描行数)、TiKV 的 IO 利用率、Region 热点 / 锁冲突是最常见的慢查询诱因
添加合适索引、更新统计信息、调整并发参数是解决大部分慢查询的快速手段
先分析分析执行计划,看看可能的瓶颈点在哪
好像可以直接查一个表看执行计划?
如果你已经确定这个 SQL 慢了,那你需要查看 SQL 执行计划是否正确。
https://docs.pingcap.com/zh/tidb/stable/explain-walkthrough/
你得学会执行计划解读。
简单点方法,你可以将表结构和执行计划丢给 AI 先分析一波。
对,explain analyze 可以看执行计划
