首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Snowflake中的结果缓存大小

Snowflake中的结果缓存大小
EN

Stack Overflow用户
提问于 2021-06-04 02:17:11
回答 1查看 70关注 0票数 0

Snowflake中的结果缓存非常有用。

我正在尝试的一个用例是在数据仓库中运行用户的查询post批加载,以便缓存结果。当2-3小时后,当业务用户运行相同的查询时,可能使用最小的仓库,数据将从缓存中返回。

但我需要了解结果缓存的容量是多少。我们能知道结果缓存可以存储多少行吗?

假设一个用户查询拉取了一百万行。Snowflake会在结果缓存中存储所有百万行吗?或者说是一亿行。

一旦容量被突破,数据将被存储在哪里。我们如何知道容量以及何时被攻破?

EN

回答 1

Stack Overflow用户

发布于 2021-06-04 04:01:05

对结果集缓存的大小没有实际限制。时间限制是指自上次使用结果集以来的24小时:

每次重复使用查询的持久化结果时,雪花都会重置结果的24小时保留期,最长为从第一次执行查询的日期和时间算起的31天。31天后,结果将被清除,下次提交查询时,将生成新的结果并将其持久化。

https://docs.snowflake.com/en/user-guide/querying-persisted-results.html

其他一些注意事项:

运行相同查询的

  1. 不保证使用结果集缓存。有8个条件必须满足,即使这样也不能保证使用结果集缓存。https://docs.snowflake.com/en/user-guide/querying-persisted-results.html#retrieval-optimization
  2. To保证使用结果集缓存,而不是在24小时内运行相同的查询,你可以运行select * from table(result_scan('019caf93-0500...'));
  3. If你不做任何处理/过滤结果集,只做一个select *,它甚至不需要一个正在运行的warehouse.
  4. Note,如果你像#2那样运行查询,如果底层表中的数据发生变化,它将不会改变结果。再次运行生成结果集的原始语句将会这样做(表更改是第1点中的8个条件之一),但不太可能重用结果。
  5. 如果您使用result_scan函数,则可以像对待任何表一样对待它,并将其与其他表联接、对其进行筛选、对其运行函数等。执行除简单的未筛选select之外的任何操作都需要一个正在运行的仓库。仓库大小可能比最初用于创建结果集的仓库小得多。例如,复杂查询可以消化结果,然后某人可以通过result_scan函数使用结果集来按行筛选,或者对主查询中的预处理结果执行更简单的查询。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67826777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档