Snowflake cloud data platform 磁盘溢出的方式是什么?在雪花中如何避免磁盘溢出

Snowflake cloud data platform 磁盘溢出的方式是什么?在雪花中如何避免磁盘溢出,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,您好,根据下面提到的链接 溢出被描述为“当雪花无法在内存中执行操作时,它首先将数据溢出到磁盘,然后溢出到远程存储。” 第1部分 -无法在内存中容纳操作:这是否意味着仓库的内存大小很小,无法处理工作负载,并且查询处于排队状态 除了join操作之外,还有哪些操作会导致此问题 第二部分 -它首先将数据溢出到磁盘,然后溢出到远程存储:在本文中所指的磁盘是什么,正如我们所知,仓库只是一个没有磁盘的计算单元 这是否意味着无法放入仓库内存的数据将溢出到存储层 -所谓的“远程存储”。那是指内部舞台吗 请帮助理解

您好,根据下面提到的链接 溢出被描述为“当雪花无法在内存中执行操作时,它首先将数据溢出到磁盘,然后溢出到远程存储。”

第1部分

-无法在内存中容纳操作:这是否意味着仓库的内存大小很小,无法处理工作负载,并且查询处于排队状态

除了join操作之外,还有哪些操作会导致此问题

第二部分

-它首先将数据溢出到磁盘,然后溢出到远程存储:在本文中所指的磁盘是什么,正如我们所知,仓库只是一个没有磁盘的计算单元

这是否意味着无法放入仓库内存的数据将溢出到存储层

-所谓的“远程存储”。那是指内部舞台吗

请帮助理解磁盘在雪花中溢出


连接的变体(如展平)会创建更多的行和聚合操作(如COUNT DISTINCT)

就在昨天,我对两年的数据做了一些统计,每月汇总一次,结果泄露到本地和远程

我意识到我在做
COUNT(DISTINCT column1,column2)
时,我想要
COUNT(*)
作为所有那些已经不同的值对,这阻止了远程溢出,为了避免部分/大部分本地溢出,我将我的SQL拆分为一年大小的批(数据及时聚集,因此读取不会浪费),并将结果集插入表中。最后,与中型仓库相比,我在一个超大仓库上运行了批次

我不知道本地/远程磁盘在哪里的确切答案,但许多EC2实例都有本地磁盘,因此他们可能使用这些实例,否则可能是EBS。我相信遥控器是S3


但这个故事的寓意是,仅仅是一台使用交换内存的PC机,不只是让操作立即失败是很好的,但大多数情况下,如果操作失败了,你会过得更好,因为需要多长时间是痛苦的

是的,远程溢出是S3(本地是本地实例缓存)——通常,当发生远程溢出时,情况非常糟糕,查询的性能受到影响


除了重写查询外,您可以尝试在文档中提到的更好的仓库上运行它-它将拥有更多的缓存,溢出应该会显著减少。

内存是计算服务器内存(访问速度最快),本地存储是连接到EC2的EBS卷,远程存储是S3存储(访问速度最慢)

这种溢出会对查询性能产生深远的影响(特别是在使用远程磁盘进行溢出时)。为了缓解这种情况,建议:

使用较大的仓库(有效地增加操作的可用内存/本地磁盘空间),和/或以较小的批量处理数据


文档参考:

“本地存储是连接到EC2的EBS卷”,这意味着计算节点中有一个本地磁盘?这就是您的意思。