在Snowflake中,对大型表执行删除操作的最佳方法是什么?

时间:2019-10-25 14:54:04

标签: snowflake-data-warehouse

我们正在考虑将ODS从S3迁移到Snowflake,但对性能存在一些担忧。从15亿(较小的一侧)行表中删除3,900万行,在x小型仓库中需要15分钟,在小型仓库中需要8分钟,在中型仓库中需要5分钟。我们可以在更大的情况下投入资金,但是在探索所有其他措施之前,我们真的不愿意这样做。

我们也正在考虑实施手动分区系统以对表进行分块,但是创建支持功能会花费开发成本。

Snowflake是否有一个我不知道的分区系统,它等同于SQL Server?我知道这是可以达到的,但是交换分区很棒。

感谢您的任何反馈!

2 个答案:

答案 0 :(得分:1)

Snowflake没有像SQL Server这样的分区,但是Snowflake中数据的存储方法是微分区,类似于...之类。您可以使用Snowflake的自动重新群集服务在一个或多个字段上对齐这些微分区,这将使删除这些键的操作更加快捷。利用要删除的字段对表进行群集应该会很有帮助。

答案 1 :(得分:0)

在表上进行显式集群的方法需要进行周密的计划,以考虑涉及同一表的各种访问模式和工作负载(摄取,查询等)和成本方面的考虑,因此,我不确定是否为删除案例进行显式集群更改表布局的充分理由。
如果不是使用较大的删除功能,而使用CTAS在尚存的行和删除的原始表上创建另一个表,该怎么办?