手动analyze table 耗时过长

我这有一张大表,手动做了一次分析,耗时16096.221s,有什么办法优化?
image

tidb是那个版本?表数据量多大?这个表是分区表么?

几百亿的数据量,没做分区,分区了可能会更慢

:thinking:启用快速分析?


https://docs.pingcap.com/zh/tidb/v5.4/statistics#手动收集

1 个赞

我想知道这个analyze能不能增量的执行,或者类似ddl似的在后台执行,因为执行完后耗时那么久,万一网络原因断开了连接,会不会导致之前白跑了?

正常这里都会标注版本

1 个赞

https://docs.pingcap.com/zh/tidb/v5.4/statistics#全量收集
参考这里,我觉得可以特别大的表,应该按照比例收集。例如WITH 0.1 SAMPLERATE只收集10%的数据。
另外建议修改analyze的并发度


适当调大一点,不要影响生产应用。

1、如上,调整参数,加快analyze速度,但对业务会有影响;
2、增加tikv数量,也可以适当加快;
3、升级到v6.5.8,analyze速度也会得到提升。
建议升级

经常增删数据的大表,优化缓慢很正常,快了可以影响到使用性能

分析时加入采样比例,当然比例的高低也会影响优化器的选择算法

可以增加ANALYZE 并发度,分配更多的资源给analyze操作。参考链接:
https://docs.pingcap.com/zh/tidb/stable/statistics#控制-analyze-并发度

看文档,有个并发参数

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