灌水唠嗑区
其他
问答

分区表新增了一个分区之后,为什么建议立刻执行 ANALYZE?不执行会有什么后果?

发表于2026-03-23 11:18:4911次浏览4个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:

【操作系统】:

【CPU】:

【问题描述】*:分区表新增了一个分区之后,为什么建议立刻执行 ANALYZE?不执行会有什么后果?

评论

登录后才可以发表评论
nodddddd发表于 4个月前
GBase 8a 分区表的统计信息是按分区单独维护的。当通过 ALTER TABLE ... ADD PARTITION 新增一个分区时,这个新分区在系统中没有任何统计信息,行数、数据分布、Cardinality 全部为空或默认值。
如果不执行 ANALYZE,后续向新分区写入数据并进行查询时,优化器无法准确估算新分区的数据量和过滤效果,可能出现以下问题:一是对新分区的查询执行计划选择错误,本可以利用分区裁剪跳过旧分区直接查新分区,却因为统计信息缺失导致优化器做出错误判断;二是涉及新分区数据的 JOIN 查询,由于无法估算结果集大小,JOIN 策略可能退化为低效方案;三是包含新旧分区的混合查询,整体执行计划可能因为新分区的统计信息缺失而出现连锁偏差。
所以最佳实践是在 ADD PARTITION 并完成数据导入后,立刻执行 ALTER TABLE t ANALYZE PARTITION p_新分区 更新该分区的统计信息,确保优化器有准确的数据依据。
用户头像
柒柒天晴发表于 4个月前
学习
milan发表于 4个月前
学习

经纬发表于 4个月前
学习了