Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Snowflake cloud data platform 结果缓存大小(以雪花为单位)_Snowflake Cloud Data Platform - Fatal编程技术网

Snowflake cloud data platform 结果缓存大小(以雪花为单位)

Snowflake cloud data platform 结果缓存大小(以雪花为单位),snowflake-cloud-data-platform,Snowflake Cloud Data Platform,雪花中的结果缓存非常有用 我正在尝试的一个用例是在数据仓库中运行用户的查询后批处理加载,以便缓存结果。当业务用户在2-3小时后运行相同的查询时(可能使用最小的仓库),数据将从缓存中返回 但我需要了解结果缓存的卷容量是多少。我们可以知道结果缓存可以存储多少行吗 假设一个用户查询拉取了一百万行。雪花将在结果缓存中存储所有百万行。或者说一亿行 一旦超出容量,数据将存储在何处。我们如何知道容量以及何时被破坏结果集缓存的大小没有实际限制。限制为时间,即自上次使用结果集起24小时: 每次重用查询的持久化结果

雪花中的结果缓存非常有用

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

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

假设一个用户查询拉取了一百万行。雪花将在结果缓存中存储所有百万行。或者说一亿行


一旦超出容量,数据将存储在何处。我们如何知道容量以及何时被破坏

结果集缓存的大小没有实际限制。限制为时间,即自上次使用结果集起24小时:

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

其他一些考虑:

运行相同的查询不能保证使用结果集缓存。必须满足8个条件,即使这样也不能保证使用结果集缓存。 为了保证使用结果集缓存,您可以运行select*from tableresult_scan'019caf93-0500…,而不是在24小时内运行相同的查询; 如果不对结果集进行任何处理/筛选,只需选择*,它甚至不需要运行仓库。 请注意,如果像图2中那样运行查询,则如果基础表中的数据发生更改,则不会更改结果。再次运行生成结果集的原始语句将确保表更改是第1点中的8个标准之一,但不太可能重用结果。 如果使用结果扫描功能,您可以将其视为任何表,并将其与其他表连接、过滤、在其上运行函数等。除了简单的未过滤选择之外,执行任何操作都需要运行仓库。仓库的大小可能大大小于最初用于创建结果集的大小。例如,一个复杂的查询可以消化结果,然后有人可以通过result_scan函数使用结果集按行过滤,或者对主查询中预处理的结果执行更简单的查询。
谢谢你,格雷格。所以您的意思是,如果我的查询返回10亿行或数百万行,它将保留在结果缓存中。我认为会有任何限制,因为结果缓存必须是一个单独的计算机,将数据存储在内存中,而不是存储在内存中。它存储在对象存储S3、Azure Blob和Google存储中,具体取决于云平台。