Snowflake cloud data platform 更好地控制雪花中的桌子锁定

Snowflake cloud data platform 更好地控制雪花中的桌子锁定,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我们需要在Snowflake中的同一个表上运行多个merge语句。我们现在面临的挑战之一是,每个merge语句(导致更新)似乎都会阻止其他合并。 每个merge语句都处理属于非重叠键列(也称为租户)的数据。数据量在租户之间分布不均匀 因此,我们认为,如果我们使用租户作为集群键对表进行集群(我阅读了文档,文档中说集群对较小的表没有帮助,但我想我无论如何都会尝试一下),那么我们最终将为每个租户提供一个微分区,因此更新上的阻塞将不再发生。但是我们注意到集群密钥并不能保证每个租户都有唯一的微分区。不幸的

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

因此,我们认为,如果我们使用租户作为集群键对表进行集群(我阅读了文档,文档中说集群对较小的表没有帮助,但我想我无论如何都会尝试一下),那么我们最终将为每个租户提供一个微分区,因此更新上的阻塞将不再发生。但是我们注意到集群密钥并不能保证每个租户都有唯一的微分区。不幸的是,正如预期的那样,100%的租户只有23个分区,阻塞还在继续

在检查锁时,我们看到它被保存在分区上(我假设它是微分区)


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

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


不过有一个想法:根据您拥有的租户组,是否可能有多个“暂存表”(这样每个表都可以由合并独立操作,而无需阻塞)并将它们合并到下游/最终表单表或视图中?

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


不过有一个想法:根据您拥有的租户组,是否可能有多个“暂存表”(这样每个表都可以由合并独立操作,而无需阻塞)并将它们合并到下游/最终表单表或视图中?

+1到这一步,我会采用多个暂存表并将其合并到一个下游表中的方法。+1到这一步,我会采用多个暂存表并将其合并到一个下游表中的方法。