【问题标题】:micropartition statistics snowflake微分区统计雪花
【发布时间】:2020-04-06 01:18:42
【问题描述】:

众所周知,雪花架构中的微分区支持优化器查询方法,以便在用户需要了解每列数据时更快地呈现数据结果:

  • 特定范围的数据
  • 统计信息(MAX、MIN、COUNT)

但是,检查documentation 微分区也会保留有关不同值数量的信息。我一直在尝试测试查询优化器何时可以进入后台,以避免部署计算层,然后快速呈现数据且无需计算任务。

我尝试了 MAX、MIN、COUNT,对于这些结果,执行是在没有任何计算层的情况下渲染的,而且时间非常合适。但是我尝试执行 COUNT DISTINCT 但在这里我注意到计算层在显示结果之前已部署:

那么,微分区如何使查询优化器受益的方式是保持汇总数据可用,但当查询需要不同的计数或 AVG 时,它仍然需要计算操作?

谢谢。

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    我不是来自 Snowflake,但我认为原因是因为收集不同计数和平均值的统计信息比 MIN 更复杂(需要更多空间 + 计算),最大和计数。

    如果您想在元数据层中为每个微分区存储 MIN、MAX 和 COUNT,那么您最多只能为每个微分区每列存储 3 个值。如果您想存储不同的计数,它完全取决于微分区本身内的数据(例如,可以有许多不同的值,每个微分区的计数为 1)。

    我认为存储每个微分区的平均值或不同计数没有多大意义,因为当您进行平均/不同计算时,无论如何您几乎总是会跨微分区计算它们,这意味着您有一直重新计算该值。另外你会如何平均一个字符串?

    还存储 MIN/MAX/COUNT 的全局值并在新数据进入表时更新这些值可能非常快,并且具有非常可预测的计算和元数据存储占用空间,但计算 AVG 和 COUNT DISTINCT 的全局值不会.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-10
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      相关资源
      最近更新 更多