【问题标题】:Parallel inserts/delete on single snowflake table在单个雪花表上并行插入/删除
【发布时间】:2021-01-26 06:12:10
【问题描述】:
我有一个场景,我必须在雪花表上运行并行插入/删除。
例如:该表包含与不同国家相关的数据。并且每个插入管或螺纹将仅包含特定国家/地区的数据。
同样,当我运行并行删除时,每个删除线程将仅删除特定国家/地区的数据。
我希望根据国家/地区对雪花表中的数据进行分区,这可能有助于避免任何锁定。但是,雪花中似乎没有该选项。
您能否建议我如何实现并行插入/删除并避免和争用或锁定。
注意:我正在使用 matillion 并行运行不同的 ELT 作业来执行插入操作。
【问题讨论】:
标签:
snowflake-cloud-data-platform
【解决方案1】:
在雪花中,没有分区选项。这是一款真正的 SaaS 产品,几乎为零管理。
关于并行插入和删除的问题,如果有很大的延迟,您可以扩大或自动扩大。 Snowflake 数据平台实现了一种强大且独特的分区形式,称为微分区,它提供了静态分区的所有优点而没有已知限制,并提供了额外的显着优势。
你也可以去桌clustering
【解决方案2】:
您极不可能(几乎不可能)锁定您的数据表。如果您要锁定元数据表,请按照上面@sergiu 链接中建议的解决方案进行操作。
如果您有性能问题(但不是表/记录锁定),那么可能的解决方案包括:
- 更大的仓库(不太可能大大提高性能,但如果其他方法都失败了,值得一试)
- 自动扩展您的仓库(如上一个答案中所建议的那样),以便在工作负载高时并行运行更多仓库
- 运行多个仓库:每个国家 1 个或每个国家组 1 个。除非某些国家/地区的数据比其他国家/地区的数据多得多,并且调整仓库大小以匹配数据大小是有好处的,否则自动扩展没有真正的好处