开发者社区 > 大数据与机器学习 > 实时数仓 Hologres > 正文

Hologres这个hg_table_statistic里的统计信息和直接auto 有出入吗?

我们有的Hologres查询用到的表【hg_table_statistic】有统计信息,但是执行计划中,没有统计信息,如果手动执行一次analysis,计划就正常了。这个hg_table_statistic里的统计信息和直接auto analysis有出入吗?

展开
收起
真的很搞笑 2024-01-31 17:29:57 33 0
2 条回答
写回答
取消 提交回答
  • 可能是因为在手动执行analysis命令时,系统重新收集了统计信息。
    也需要看看DB是否设置了不太长的statement timeout,无法在此时间内跑出,导致 hg_table_statistic表中的统计信息可能不够准确
    ,此回答整理自钉群“实时数仓Hologres交流群”

    2024-02-01 07:54:36
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在Hologres中,hg_table_statistic表中的统计信息和直接执行ANALYZE命令产生的统计信息应该是相同的。这两者都是用于收集表的统计信息,以便优化器在生成执行计划时能够更好地选择最优的查询策略。

    然而,有时可能会出现hg_table_statistic中的统计信息与实际执行计划中使用的统计信息不一致的情况。这可能是由于以下原因导致的:

    1. 数据变化:如果表的数据发生了较大变化,例如大量数据的插入、删除或更新,那么hg_table_statistic中的统计信息可能已经过时,不再准确反映当前数据分布情况。在这种情况下,执行ANALYZE命令会重新收集统计信息,使其与实际数据保持一致。

    2. 统计信息未及时更新:在某些情况下,即使数据发生了变化,hg_table_statistic中的统计信息也未能及时更新。这可能是因为自动统计信息收集功能未开启或触发条件未满足。通过手动执行ANALYZE命令,可以立即更新统计信息。

    3. 执行计划缓存:在某些情况下,即使统计信息已经更新,执行计划仍然使用的是旧的统计信息。这可能是因为查询优化器将之前的执行计划缓存了起来,而未及时使用新的统计信息重新计算执行计划。在这种情况下,可以尝试清除执行计划缓存,或者重启Hologres实例以使新的统计信息生效。

    总之,如果您发现hg_table_statistic中的统计信息与执行计划中使用的统计信息不一致,可以尝试手动执行ANALYZE命令来更新统计信息。同时,确保自动统计信息收集功能已开启并根据需要调整相关参数,以便在数据发生变化时及时更新统计信息。

    2024-01-31 20:30:50
    赞同 展开评论 打赏

本技术圈将为大家分析有关阿里云产品Hologres的最新产品动态、技术解读等,也欢迎大家加入钉钉群--实时数仓Hologres交流群32314975

相关产品

  • 实时数仓 Hologres
  • 相关电子书

    更多
    实时数仓Workshop(广州站)- 李佳林 立即下载
    阿里云实时数仓Hologres技术揭秘2.0 立即下载
    实时数仓Hologres技术实战一本通2.0版(下) 立即下载