【发布时间】:2021-08-30 19:02:08
【问题描述】:
我在 Snowflake 中有 2 个存储点击事件的大表(分别为 ~1 和 ~15 TB)。它们存在于两种不同的模式中,但具有相同的列和结构;只是来源不同。
数据每月转储/附加到这些表中,并且两个表都有一个 time_id 整数字段,表示自发生点击事件以来的天数。
问题 是 -- 我是否应该让 Snowflake 来优化分区 --OR-- 这是否适合手动分配集群键?并且说,我确实决定向它添加一个集群键,下次插入后重新集群是否只是为了增量数据? --OR-- 会不会和初始集群一样昂贵?
如果有帮助,这里是两张表中较大的一张的一些聚类信息
select system$clustering_information( 'table_name', '(time_id)')
{
"cluster_by_keys" : "LINEAR(time_id)",
"total_partition_count" : 1151026,
"total_constant_partition_count" : 130556,
"average_overlaps" : 4850.673,
"average_depth" : 3003.3745,
"partition_depth_histogram" : {
"00000" : 0,
"00001" : 127148,
"00002" : 0,
"00003" : 0,
"00004" : 0,
"00005" : 0,
"00006" : 0,
"00007" : 0,
"00008" : 0,
"00009" : 0,
"00010" : 0,
"00011" : 0,
"00012" : 0,
"00013" : 0,
"00014" : 0,
"00015" : 0,
"00016" : 0,
"01024" : 984,
"02048" : 234531,
"04096" : 422451,
"08192" : 365912
}
}
我将针对这些表运行的典型查询
select col1, col_2, col3, col4, time_id
from big_table
where time_id between 6000 and 7600;
【问题讨论】:
-
您对这些数据运行了哪些查询?如果你选择它,你会选择什么集群策略?您是否有任何特定的查询要提高性能?
-
@FelipeHoffa 我想我可以利用基于时间的集群键来更容易地将所需的数据子集转储到临时表中,然后对我想象的那个临时表进行所有繁重的工作小得多。我还可以按 time_id 和 domain 进行聚类,因为 domain 是一种流行的 where 子句条件,但我不确定这是否会产生重大开销。这些表不经常被查询,但是当他们查询时,性能真的很差
标签: snowflake-cloud-data-platform