tidb 8.5.3重启后执行计划混乱,耗时不稳定

一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题

【TiDB 使用环境】生产环境
【TiDB 版本】v8.5.3
【部署方式】虚拟机
【操作系统/CPU 架构/芯片详情】
【机器部署详情】CPU大小/内存大小/磁盘大小
【集群数据量】
【集群节点数】
0点reload重启集群后就各种问题,耗时变长,cpu占用率很高,执行计划不稳定,tiflash cpu占满
【复制黏贴 ERROR 报错的日志】


出现大量错误日志
2026-02-27 13:32:40 (UTC+08:00)

TiDB 10.131.173.20:4000

[distsql.go:1250] [“tableWorker in IndexLookUpExecutor panicked”] [conn=1074622224] [session_alias=] [recover=“[executor:3024]Query execution was interrupted, maximum statement execution time exceeded”] [stack=“github.com/pingcap/tidb/pkg/executor.(*tableWorker).pickAndExecTask.func1\n\t/workspace/source/tidb/pkg/executor/distsql.go:1250\nruntime.gopanic\n\t/usr/local/go/src/runtime/panic.go:791\ngithub.com/pingcap/tidb/pkg/util/memory.(*Tracker).Consume\n\t/workspace/source/tidb/pkg/util/memory/tracker.go:507\ngithub.com/pingcap/tidb/pkg/executor.(*tableWorker).executeTask\n\t/workspace/source/tidb/pkg/executor/distsql.go:1564\ngithub.com/pingcap/tidb/pkg/executor.(*tableWorker).pickAndExecTask\n\t/workspace/source/tidb/pkg/executor/distsql.go:1268\ngithub.com/pingcap/tidb/pkg/executor.(*IndexLookUpExecutor).startTableWorker.func1\n\t/workspace/source/tidb/pkg/executor/distsql.go:864”]

2026-02-27 13:32:44 (UTC+08:00)

TiDB 10.131.178.142:4000

[select_result.go:598] [“invalid cop task execution summaries length”] [expected=1] [received=0]

2026-02-27 13:32:44 (UTC+08:00)

TiDB 10.131.178.142:4000

[select_result.go:598] [“invalid cop task execution summaries length”] [expected=1] [received=0]

2026-02-27 13:32:44 (UTC+08:00)

TiDB 10.131.178.142:4000

[distsql.go:1250] [“tableWorker in IndexLookUpExecutor panicked”] [conn=529340294] [session_alias=] [recover=“[executor:3024]Query execution was interrupted, maximum statement execution time exceeded”] [stack=“github.com/pingcap/tidb/pkg/executor.(*tableWorker).pickAndExecTask.func1\n\t/workspace/source/tidb/pkg/executor/distsql.go:1250\nruntime.gopanic\n\t/usr/local/go/src/runtime/panic.go:791\ngithub.com/pingcap/tidb/pkg/util/memory.(*Tracker).Consume\n\t/workspace/source/tidb/pkg/util/memory/tracker.go:507\ngithub.com/pingcap/tidb/pkg/executor.(*tableWorker).executeTask\n\t/workspace/source/tidb/pkg/executor/distsql.go:1564\ngithub.com/pingcap/tidb/pkg/executor.(*tableWorker).pickAndExecTask\n\t/workspace/source/tidb/pkg/executor/distsql.go:1268\ngithub.com/pingcap/tidb/pkg/executor.(*IndexLookUpExecutor).startTableWorker.func1\n\t/workspace/source/tidb/pkg/executor/distsql.go:864”]

【其他附件:截图/日志/监控】
logs (2).zip (8.8 KB)

缩小下问题看看

是所有的表,还是某些表?

表太多了,我也不太确定了,已知查询慢的表有好多张

能发一下你操作的具体命令吗?

整个集群重启么?tidb-server 重启统计信息是异步加载的,可能是刚重启就接入流量,有一些 SQL 走错执行计划了?

可以先看下对应时间是不是很多 SQL 的执行计划没有走对。

统计信息加载行为

  • tidb_stats_load_sync_wait*

    • 作用域: SESSION | GLOBAL

    • 是否持久化: 是

    • 描述: 控制统计信息加载模式(异步/同步,默认 100ms超时)。

    • 重启影响: 重启后,同步加载超时时间按配置生效。

  • tidb_stats_load_pseudo_timeout*

:joy:我们一般都是担心reload把原本没下传的配置下传下去。一般都是restart。

:grimacing: 重启是正常操作的,只是 tidb-server 有统计信息加载机制,尤其有些表比较大,统计信息比较大可能加载会超时。。。。重启后立马接入流量是有更高概率走错执行计划的。

检查下表的健康度,然后把健康度低的表执行一遍analyze table

感觉军总指导,tikv磁盘占用比例过高,重启导致 流量过多的均衡给了tiflash,tiflash打满了,猜测可能又均衡给了tikv,导致tiflash和tikv都被打满了,
解决方案:

  1. 扩容tikv节点,通过均衡降低磁盘大小,比较慢
  2. 通过edit-config调整pd的 low-space-ratio参数,加大为90%,先把调度改回去,比较快
2 个赞

太专业了,感谢军总指导

  • 统计信息丢失或加载失败

  • reload 操作会重启 TiDB 实例,而统计信息默认存储在内存中,重启后需要从 TiKV 重新加载。

  • 如果加载过程中出现网络波动、负载过高或版本 Bug(如 v8.5.3 已知的统计信息加载问题),会导致统计信息不完整或丢失。

  • 优化器依赖准确的统计信息生成执行计划,统计信息不准会导致选错索引、走全表扫描或错误选择 TiFlash 执行,从而引发性能雪崩。

  • 执行计划缓存(Plan Cache)失效

  • TiDB v8.5.3 存在已知 Bug(如 GitHub Issue #64263),会导致 Plan Cache 无法正常工作。

  • 重启后,所有 SQL 都需要重新生成执行计划,在统计信息不准的情况下,会生成大量低效计划,反复执行导致 CPU 飙升。

  • TiFlash 被错误选择执行低效查询

  • 当优化器统计信息不准时,可能错误地将本应在 TiKV 上执行的 OLTP 查询,路由到 TiFlash 上执行。

  • TiFlash 擅长处理大吞吐的 OLAP 分析,不擅长处理高并发的点查询,大量此类查询涌入会导致 TiFlash CPU 占满,拖慢整个集群。

看上去是sql执行超时了吧

[quote=“TiDBer_ClS0jENG, post:12, topic:1051682”]
TiDB v8.5.3 存在已知 Bug(如 GitHub Issue #64263),会导致 Plan Cache 无法正常工作。
[/quote]大佬这个bug有什么解决方案吗?我感觉重启后长期有一些执行引擎和索引选择不太对的问题

reload

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。