tidb7.5.1:部分宽表分区健康度一直是0,drop stats 和手动analyze也不行

【 TiDB 使用环境】生产环境
【 TiDB 版本】7.5.1
大部分的宽表,分区健康度一直是0
字段数量

drop掉统计信息
image

看不到表的健康度

手动analyze

多次analyze 是成功的

P20240501这个分区的stats healthy是啥样的,看着你应该这个分区统计信息收集成功了

1 个赞

帖子上有, 看不到健康度

需要细节

P20240501 作了analyze之后的健康度是什么?

show analyze status 查看下统计状态,是否统计失败的任务中有没有你关注的表

健康度计算方式:
当 modify_count >= row_count 时,健康度为 0;当 modify_count < row_count 时,健康度为 (1 - modify_count / row_count) * 100。
有没有大量的修改数据操作?
gc的时间现在是多少。改大试试呢。

先清理垃圾数据,然后OP一下,看看有效果吗

另外你的分区表有几个分区?如果分区数量比较大的话,请把 tidb_auto_analyze_partition_batch_size 调大,7.6 以上默认值已经变成 128,可以加速 auto analyze 处理分区表的速度

另外如果你的分区内的总行数< 1000 的话,是不会做 auto analyze 操作的。

有可能bug了

的确挺奇怪的,看看有没有报错日志。

image
哪有20240501。。。我瞎了?

呵呵,删了之后没重建吧 :laughing:

20240501 分区统计信息 drop掉之后 没有自动重建 。

analyze 之后还是 0


image

感觉手动analyze之后的健康度结果其实和drop的情况应该是一样的,还需要分析其他信息


我本地 v7.5.1 尝试复现没有成功,方便发下你的表结构吗?

表结构如下:
sql.txt (141.9 KB)

还是没复现出来, 你 tidb_partition_prune_mode 这个参数改过吗? 现在是啥?

image
数据也不大
image