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

gan*_*gde 1 snowflake-cloud-data-platform

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

所以我们想,也许如果我们使用租户作为集群键来集群表(我读过文档说集群对较小的表没有帮助,但我想无论如何我都会试一试),我们最终会得到每个租户都有一个微分区,因此不会再发生更新阻塞。但是我们注意到集群键并不能保证每个租户都有唯一的微分区。不幸的是,正如预期的那样,100 个租户只有 23 个分区,并且阻塞仍在继续。

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

在此处输入图片说明

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

小智 6

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

不过有一个想法:是否有可能根据您拥有的租户组拥有多个“临时表”(因此每个租户都可以通过合并独立操作而不会阻塞)并将它们组合到下游/最终表格中或看法?