【问题标题】:Snowflake Caching雪花缓存
【发布时间】:2021-12-03 17:18:36
【问题描述】:

我在几个地方读到雪花中有 3 级缓存:

  1. 元数据缓存。在全局服务层中维护。这包括与微分区相关的元数据,例如列中的最小值和最大值、列中不同值的数量。这使得 SELECT MIN(col) FROM table 等查询无需虚拟仓库即可返回,因为元数据已缓存。

  2. 查询结果缓存。这也由全局服务层维护,并将查询的结果集保存 24 小时(如果在此期间运行相同的查询,则会延长 24 小时)。

  3. 仓库数据缓存。这由本地附加存储(通常是 SSD)中的查询处理层维护,并包含从存储层提取的微分区。

https://www.linkedin.com/pulse/caching-snowflake-one-minute-arangaperumal-govindsamy/

然后我还在 Snowflake 文档中读到这些缓存存在:

  1. 结果缓存:保存过去 24 小时内执行的每个查询的结果。这些可跨虚拟仓库使用,因此返回给一个用户的查询结果可供系统上执行相同查询的任何其他用户使用,前提是基础数据未更改。

  2. 本地磁盘缓存。这用于缓存 SQL 查询使用的数据。每当给定查询需要数据时,都会从远程磁盘存储中检索数据,并缓存在 SSD 和内存中。

  3. 远程磁盘缓存。这拥有长期存储。此级别负责数据弹性,对于 Amazon Web Services,这意味着 99.999999999% 的持久性。即使在整个数据中心发生故障的情况下。

https://community.snowflake.com/s/article/Caching-in-Snowflake-Data-Warehouse

这些之间的对应关系是什么?两者都有查询结果缓存,但为什么雪花文档中没有提到元数据缓存?并且是仓库数据缓存中包含的雪花文档中提到的远程磁盘缓存(我认为不应该。

那么 Snowflake 中真的有 4 种缓存吗?:

  1. 元数据缓存
  2. 查询结果缓存
  3. 本地磁盘缓存
  4. 远程磁盘缓存

【问题讨论】:

    标签: snowflake-cloud-data-platform snowflake-schema


    【解决方案1】:

    元数据缓存 - 云服务层确实拥有元数据缓存,但它主要用于编译期间和 SHOW 命令。它是一个内存缓存,一旦部署新版本就会变冷。您指出的社区文章中已经解释了其他缓存。

    【讨论】:

      【解决方案2】:

      Snwoflake 有 3 种类型的缓存:

      1. 元数据缓存

      2. 结果缓存

      3. 仓库缓存有同义词:

        • 原始数据缓存
        • SSD 缓存
        • 数据缓存
        • 本地(磁盘)

      “远程(磁盘)”不是缓存,而是长期集中存储。

      【讨论】:

      • 你是说存储层(远程磁盘)没有缓存?
      • @VivekSharma 来自您提供的链接:“远程磁盘:拥有长期存储。此级别负责数据弹性,在 Amazon Web Services 的情况下,这意味着 99.999999999% 的持久性。甚至在整个数据中心发生故障的情况下。”我猜您添加了“远程磁盘缓存”一词。底层存储 Azure Blob/AWS S3 确实使用了某种缓存,但它与此处提到并由 Snowflake 管理的 3 个缓存无关。
      • 是的,我确实添加了它,但只是因为在此之前它还显示“下图说明了数据和结果被缓存以供后续使用的级别。这些是:" [我的粗体强调]
      猜你喜欢
      • 2020-11-29
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 2022-07-27
      • 2021-10-01
      • 2021-06-22
      相关资源
      最近更新 更多