补充一下:
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
数据量是不是很大
表有多少数据
是不是分区表?
这回答,好规范
gpt
数据量不大,基本上没有数据,主要的原因还是表结构过得封复杂,有2500个字段。
128个分区
128个分区,2500个字段,这。。。
你的分区规则是TiDB的RANGE列进行分区的么?
先试试单分区的ANALYZE 呢?ALTER TABLE XXX ANALYZE PARTITION p1;
也可以阵地单列进行收集统计信息的,可以先试下,慢不慢
PARTITION BY HASH (form_id
) PARTITIONS 128;这是分区规则
好的,我之前都是全表analyze,我试一下单个分区的时长,谢谢
好的。
分区表 global stats merge 有点问题,后续会优化。
这里是暂时的一些优化手段:
- A better way to do the analyze jobs is:
1. set global tidb_partition_prune_mode = ‘static’. In the static mode, when we analyze one partition, we don’t merge stats. So it will be fast.
2. Run the analyze script to collect stats for each non-partitioned table and each partition
3. set global tidb_partition_prune_mode = ‘dynamic’.
4. Then for each partitioned table, analyze one partition of it to trigger merging partition stats to global stats.
TIDB的统计收集这块与MySQL原生差异很大,表的健康度这块的变化非常快【线上写入比较频繁的时候】,从而导致执行计划不准
优化措施未测试好慎用
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。