【问题标题】:Snowflake Result Cache雪花结果缓存
【发布时间】:2020-11-29 15:23:01
【问题描述】:

我对结果缓存有疑问。在雪花文档之一中,即使用户不同,角色也必须相同,才能使用结果缓存。但是,当我尝试使用不同的角色和用户时,我仍然能够访问结果缓存,您能否确认我的理解 - 任何有权访问对象的角色都可以重用结果缓存,尽管它不一样。

我的实验:

执行 Role1 的用户 1 - select * from emp;

具有 Role2 的用户 2 执行了相同的查询 - select * from emp;它使用从缓存中获取结果而不使用虚拟仓库。

【问题讨论】:

    标签: caching snowflake-cloud-data-platform


    【解决方案1】:

    根据 Snowflake 文档 https://docs.snowflake.com/en/user-guide/querying-persisted-results.html#retrieval-optimization,大多数查询要求访问结果缓存的角色必须有权访问生成结果缓存的所有基础数​​据。注意的一个例外是SHOW 命令结果缓存只能使用相同的角色访问。这可能是您共享的文档中指出的异常的原因,尽管不太清楚。

    【讨论】:

    【解决方案2】:

    没有任何虚拟仓库就无法提供缓存。

    我们需要计算(虚拟仓库/跨虚拟)来处理或保存本地磁盘中的缓存数据。

    “这些可跨虚拟仓库使用,因此返回给一个用户的查询结果可供系统上执行相同查询的任何其他用户使用,前提是基础数据未更改。”

    更多详情link

    【讨论】:

    • 我相信OP只是在谈论结果缓存,而不是仓库缓存。
    • 我认为您的缓存评论没有任何虚拟仓库就无法服务可能不对。当您运行查询时,其结果将缓存在元数据存储库中。来自元数据存储库的任何东西都不收取计算费用,因为它不使用仓库。但是,SSD 缓存是另一回事,如果虚拟仓库停止,它就会丢失。理想情况下,如果用户使用之前运行查询的相同角色,则结果将来自结果缓存。我的理解是,如果角色不同,则该缓存对用户不可用。
    • Rajib 我们有以下三种缓存结果缓存的方法:它保存过去 24 小时内执行的每个查询的结果。这些可跨虚拟仓库使用,因此返回给一个用户的查询结果可供系统上执行相同查询的任何其他用户使用,前提是基础数据未更改。
    • 远程磁盘:长期存储。此级别负责数据弹性,对于 Amazon Web Services,这意味着 99.999999999% 的持久性。即使在整个数据中心发生故障的情况下。
    • 本地磁盘缓存:用于缓存SQL查询使用的数据。每当给定查询需要数据时,就会从远程磁盘存储中检索数据,并缓存在 SSD 和内存中。
    猜你喜欢
    • 2021-08-21
    • 2021-12-03
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多