插入时的雪花微分区
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 次,那么我在上面的回答。以上是关于插入时的雪花微分区的主要内容,如果未能解决你的问题,请参考以下文章