更好地控制雪花中的表锁定

时间:2020-01-28 16:55:10

标签: snowflake-cloud-data-platform

我们需要在Snowflake的同一张表上运行多个merge语句。我们现在面临的挑战之一是每个合并语句(导致更新)似乎都阻止了其他合并。 每个合并语句都处理属于非重叠键列(也称为租户)的数据。数据量在租户之间分布不均。

因此,我们认为,如果我们使用租户作为聚类键对表进行聚类(我阅读了文档,该文档说聚类在较小的表上无济于事,但我想无论如何我都会尝试一下)最终每个租户都有一个微分区,因此不再会阻止更新。但是我们注意到,集群密钥不能保证每个租户唯一的微分区。不幸的是,正如预期的那样,只有100个租户有23个分区,并且封锁仍在继续。

在检查锁时,我们看到它位于PARTITIONS上(我假设它是微型分区)

enter image description here

我想知道Snowflake中是否有任何机制可以改善对更新的阻止或控制进入微分区的数据的方式。

1 个答案:

答案 0 :(得分:4)

据我了解,没有一种简单的方法可以改善对更新的阻止,也无法控制/保证进入Snowflake中的微分区的数据。由于docs状态为“ UPDATE,DELETE和MERGE语句持有的锁通常会阻止它们与其他UPDATE,DELETE和MERGE语句并行运行”-因此,通常鼓励在可能的情况下批量更新/删除。

但是有一个主意:根据您所拥有的租户组,可能有多个“登台表”(这样它们中的每一个都可以通过合并独立地进行操作而不会阻塞)并将它们组合到下游/最终表格或视图?