持续执行ANALYZE TABLE好几天

这种analyze 会阻塞gc嘛

对于 GC 来说,分版本,高版本有个 max-gc-wait-time 之类的系统变量,低版本会等 24h 之后干掉那个事务(hard code),高版本因为这个变量干掉 txn 的时间可变。

https://github.com/pingcap/tidb/pull/32726/files

对于 analyze 来说,分版本,低版本是取 maxUint64 做 txn start_ts 忽略 txn 影响,但高版本选择了 snapshot 方式进行 analyze,会受到 txn 影响。

问题是 : analyze 会阻塞gc嘛?
首先,要看是什么版本,下面采用了什么机制,假设 max-gc-wait-time 设置无限长,同时 analyze 无限长时间跑不完,同时 analyze 又是取 snapshot 的方式,那么是会影响。需要具体问题,具体版本,具体分析。

总结来说,是否阻塞 GC 与 txn 有关,analyze 又与 txn 有关。

GC life time is shorter than transaction duration ,在高版本 不太容易 报这个错。
就是说 GC 会等 txn 执行完。

这应该是 v4 常出的一个问题🤔,我记得

老师,您好,想请教1个问题
以前根据我们v5.0版本的使用经验,一条语句最多执行24h,超过24h后,gc不会被阻塞,gc 就继续往前面推进了,想请问下
1.v5.0版本中,语句超过24h后,这条语句应该就是被tidb 自动Kill 了吧
2.之前听说到了6.1版本后,语句执行不能超过24h的这个硬限制,有1个系统变量来控制这种行为,那么这个系统变量应该就是 tidb_gc_max_wait_time 吧,这个变量的作用原理 应该就是把超过这个系统变量运行的时间的语句给自动kill 吧?

可以手动用命令执行,这个会快一点

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