我们有的Hologres查询用到的表【hg_table_statistic】有统计信息,但是执行计划中,没有统计信息,如果手动执行一次analysis,计划就正常了。这个hg_table_statistic里的统计信息和直接auto analysis有出入吗?
可能是因为在手动执行analysis命令时,系统重新收集了统计信息。
也需要看看DB是否设置了不太长的statement timeout,无法在此时间内跑出,导致 hg_table_statistic表中的统计信息可能不够准确
,此回答整理自钉群“实时数仓Hologres交流群”
在Hologres中,hg_table_statistic
表中的统计信息和直接执行ANALYZE
命令产生的统计信息应该是相同的。这两者都是用于收集表的统计信息,以便优化器在生成执行计划时能够更好地选择最优的查询策略。
然而,有时可能会出现hg_table_statistic
中的统计信息与实际执行计划中使用的统计信息不一致的情况。这可能是由于以下原因导致的:
数据变化:如果表的数据发生了较大变化,例如大量数据的插入、删除或更新,那么hg_table_statistic
中的统计信息可能已经过时,不再准确反映当前数据分布情况。在这种情况下,执行ANALYZE
命令会重新收集统计信息,使其与实际数据保持一致。
统计信息未及时更新:在某些情况下,即使数据发生了变化,hg_table_statistic
中的统计信息也未能及时更新。这可能是因为自动统计信息收集功能未开启或触发条件未满足。通过手动执行ANALYZE
命令,可以立即更新统计信息。
执行计划缓存:在某些情况下,即使统计信息已经更新,执行计划仍然使用的是旧的统计信息。这可能是因为查询优化器将之前的执行计划缓存了起来,而未及时使用新的统计信息重新计算执行计划。在这种情况下,可以尝试清除执行计划缓存,或者重启Hologres实例以使新的统计信息生效。
总之,如果您发现hg_table_statistic
中的统计信息与执行计划中使用的统计信息不一致,可以尝试手动执行ANALYZE
命令来更新统计信息。同时,确保自动统计信息收集功能已开启并根据需要调整相关参数,以便在数据发生变化时及时更新统计信息。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975