gpt4 book ai didi

sql-update - 雪花内部如何执行更新?

转载 作者:行者123 更新时间:2023-12-03 04:28:33 24 4
gpt4 key购买 nike

据我所知,底层文件(列格式)是不可变的。我的问题是,如果文件是不可变的,更新是如何执行的。 Snowflake是否维护同一行的不同版本,并根据key返回最新版本?或者它在幕后将数据插入新文件并删除旧文件?如果时间旅行设置为 90 天,因为 Snowflake 需要维护同一行的不同版本,那么在这些场景(查询当前数据)中性能会受到怎样的影响。但由于 Snowflake 不尊重 key ,因此如何检测不同的版本。任何有关详细内部结构的见解(文档/视频)都将受到赞赏。

最佳答案

这是一个复杂的问题,但基本思想如下(相当简单):

  • 记录存储在 S3 上的不可变微分区中
  • 表是微分区的列表
  • 当记录被修改时
    • 其旧的微分区被标记为非事件状态(从那时起),
    • 系统会创建一个新的微分区,其中包含修改后的记录以及该微分区中的其他记录。
    • 新的微分区已添加到表的列表中(从那时起标记为事件状态)
  • 不活动的微分区在一段时间内不会被删除,从而允许时间旅行

因此 Snowflake 不需要记录 key ,因为每条记录仅存储在给定时间处于事件状态的一个文件中。

执行更新对查询的影响很小,唯一可见的影响可能是需要从 S3 获取文件并缓存在仓库上。

有关更多信息,我建议您访问 Snowflake 论坛并在那里提问。

关于sql-update - 雪花内部如何执行更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48653924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com