手动重聚类 – 已弃用¶
如果您的账户仍然可以使用手动重聚类,您可以使用 ALTER TABLE 命令与 RECLUSTER
子句,随时手动对聚类表进行重聚类。
本主题中的部分:
什么是手动重聚类?¶
RECLUSTER
子句指示 Snowflake 立即对指定表执行重聚类。与自动聚类不同,该 DML 操作需要账户中有一个虚拟仓库,并且在操作的持续时间内 锁定 表。
此外,对未启用自动聚类的聚类表执行一段时间的重要/持续 DML 活动之后,可能需要在该表上多次执行手动重聚类才能获得所需的结果。
出于这些原因以及其他好处,我们建议使用 自动聚类,而不是手动重聚类。
小技巧
作为一般经验法则和最佳实践,我们建议在对聚类表执行重要 DML 后手动重聚类。您可以使用表的 聚类信息,衡量表聚类是否因 DML 而降级。
手动重聚类的性能影响¶
Snowflake 在手动重聚类期间执行的分组/排序可能会影响用于执行重聚类的虚拟仓库的性能。
由于这种影响,如果您选择执行手动重聚类,我们建议使用单独的专用仓库,并确保仓库有足够的规模。
从手动重聚类切换到自动聚类¶
如果手动重聚类在账户中仍然可用,则账户可能 未 启用 自动聚类。
您可以请求为您的账户启用自动聚类;但是,它只会影响从该功能启用 之后 定义的聚类表。
对于在启用该功能之前定义的聚类表,您必须为每个表显式“恢复”自动聚类。您可以使用 SQL 确定给定表是否启用了自动聚类。
有关更多详细信息,请参阅:
手动重聚类表¶
结合使用 ALTER TABLE 与 RECLUSTER
子句,手动对群集密钥已定义的表进行重聚类。您可以使用 WHERE
子句指定在表中重聚类数据的条件或范围。
例如:
要重聚类表
t1
,请执行以下操作:ALTER TABLE t1 RECLUSTER;
要对在 2016 年第一周插入表
t1
的数据进行重聚类,请执行以下操作:ALTER TABLE t2 RECLUSTER WHERE CREATE_DATE BETWEEN ('2016-01-01') AND ('2016-01-07');
这些示例使用当前仓库(用于会话)来重聚类表。分配给手动重聚类的资源量取决于仓库的规模。仓库越大,分配给重聚类命令的资源就越多,从而实现更有效的重聚类。
备注
手动重聚类只能在聚类表(即定义了群集密钥的表)上执行。