插入时的雪花微分区

Posted

技术标签:

【中文标题】插入时的雪花微分区【英文标题】:Snowflake micropartitions in case of inserts 【发布时间】:2020-12-27 16:12:59 【问题描述】:

如果我们将数据一一插入到表中并加载整个文件,雪花的微分区是如何工作的? 与从文件中加载数据相比,使用insert逐个加载数据时,微分区的数量会增加吗?

【问题讨论】:

【参考方案1】:

不确定问题的目的是什么,但显然批量加载文件比单独插入记录要好得多,这不仅是因为您的问题,还因为实际的加载性能。

至于您的问题,Snowflake 将确定如果它有一个单记录微分区并且您要插入 1 个额外的记录,它将创建一个新的 2 记录微分区(假设它们不是非常大的记录)。因此,活动表本身不会有更多的微分区,但您仍将拥有该单记录微分区作为时间旅行和故障安全的一部分。因此,如果您一次又一次地执行 1 条记录,您将需要支付大量额外的微分区。

单记录插入在 Snowflake 中并不是一个好主意。值得研究将它们分批并批量加载的方法。

【讨论】:

但是微分区在一段时间后开始,它将所有新记录重新排列到微分区中,即使是批量插入它也必须逐条记录重新排列。那么批量加载或少量记录加载的情况不一样吗? 如果你在谈论压缩和列化,这一切都是在创建微分区之前在仓库中完成的。如果您指的是集群,那是事后由服务完成的,实际上与这个问题无关。 我的问题是,在雪花中,数据存储在微分区中,例如,如果我们使用插入语句加载 1000 行并从文件中加载相同的 1000 行,那么这种情况下会有更多的微分区文件或插入一个 如果您在 1 个批量插入语句中插入 1000 行,而不是从文件中插入 COPY INTO,那么微分区计数将是相同的。如果您一次插入 1 条记录,1000 次,那么我在上面的回答。

以上是关于插入时的雪花微分区的主要内容,如果未能解决你的问题,请参考以下文章

雪花表中json数据的解析字段将多行插入到新的雪花表中

雪花 VARCHAR 到 VARIANT 插入“\”字符

使用 JDBC 将数据插入雪花

雪花:通过插入值添加多个值时面临问题

Alteryx“更新选项所需的主键”中的雪花插入/更新错误

检查雪花中的表架构更改