分区的表的analyze非常慢,能不能优化下

1、async merge global stats 已经在 7.5 可能,如果是升级的集群,需要手动enable 一下

https://docs.pingcap.com/tidb/stable/system-variables#tidb_enable_async_merge_global_stats-new-in-v750

2、tidb_auto_analyze_partition_batch_size 可以调大,这个在 7.6 里已经默认值为 128,这个参数后续会淘汰掉。因为他会导致 auto analyze 的时候,对 partition table 的analyze 颗粒度过细,从而导致 merge global stats 对单表重复多次

3、tidb_merge_partition_stats_concurrency 可以增加 merge global stats 的并发度,加快 analyze 效率

4、illegal bucket order 已经 cherrypick 到 7.5, 7.5.1 里应该不会再报错了

另外 auto analyze 的默认并发配置都是相对保守的。需要根据自己的实际情况,机器情况调整。

tidb_sysproc_scan_concurrency

这个值根据最新的大集群测试,可以调节到256,但是请按自己的业务情况评估,不要影响到线上业务

tidb_auto_build_stats_concurrency

可以调大一点,加速一下 partition 之间的 analyze速度

tidb对分区这个特性支持的不好,别费劲了

有没有分析TiDB和OB的分区表差异的文章?

是不是有大字段?

谢谢,illegal bucket order 测试版已经不会报错了

7.6版本我测了下,分区表统计快多了,也不报错了

没有,这个你可以测测,只要分区多没多少数据都很慢

7.5版本tidb_auto_analyze_partition_batch_size和我都调过,解决不了merge慢和出错的的问题,不过tidb_auto_analyze_partition_batch_size调大可以减少merge次数

7.5.1 会没发版本,你再等一下,估计2月会出来。

https://docs.pingcap.com/zh/tidb/v6.5/system-variables#tidb_analyze_partition_concurrency 应该是这个限制了