雪花 - 聚类

Snowflake - Clustering

聚类雪花的最佳方法是什么tables

  1. 根据检索顺序以特定频率手动重新加载 table 的绝对聚类
  2. 创建集群键并打开自动重新集群但大部分暂停它,运行它只是在特定的时间间隔可能是通过查看 table[=17= 的分区扫描列]

谢谢 拉吉

您最好的方法是创建按您的集群键排序的初始 table,然后打开自动集群...然后让 Snowflake 从那里为您处理一切。

没有普遍适用的所有数据使用模式,也没有跨时间适用的集群,因为实施正在演变(说是外部,但观察它随时间变化)。

自动集群就像硬盘碎片管理一样。因为它们都是相同的想法,将类似的数据定位在附近,以使读取性能更好。就像磁盘碎片整理一样,不同的用法 loads/patterns 使 clstuering/defrag 的需求变得更加重要,并且一些用法与自动集群冲突。

例如,我们有一些 table 以尽可能紧密的循环编写,我们希望它以 90% 与插入顺序对齐的模式聚集。所以自动聚类对插入模式来说并不昂贵。但是我们每月一次从这些 table 中删除 GDPR/PII 个原因,并在 update/delete 之后更改 1/3 的分区。因此,在应用 ORDER 的情况下进行完整的 table 重写似乎有点矫枉过正。但由于插入率自动集群(就目前而言)会持续数小时,并且成本是完全 table 重写成本的 5 倍。

我们还有其他 tables(包含地址信息)并且 table 是 "rather small" 所以扫描了很多完整的 tables,所以订购它在自动集群的意义上没有意义,但每天重新构建 table,以保持分区大小尽可能小,因此完整 tables 扫描是最快的..自动聚类的要点还可以进行微分区优化,这很有用,但是我们不需要 table 顺序,所以 运行 聚类也不是..

为了寻找答案。

  1. 使用排序的 data/time 字段加载 tables - 可能用于检索数据 - 业务日期而不是 (ETL) 插入 date/time。从数据检索性能的角度来看,这对于大多数 table 应该足够好了。

  2. 您可以根据 table

  3. 上的 DML 操作速率选择重新聚类
  4. 假设您有一个额外的模式用于特定列上的数据访问 - 您可以考虑将集群键添加到 table - 并让自动集群启动。

总是希望尽早识别访问模式。鉴于此,为了确保您实现性能数据检索 - 自动聚类将重新排列数据。

自动 - 聚类会花费您的学分,但这将超过您将获得的性能。

Link here 将帮助您做出明智的决定。

希望对您有所帮助!