首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >雪花多簇仓库性能与大仓库单仓性能的比较

雪花多簇仓库性能与大仓库单仓性能的比较
EN

Stack Overflow用户
提问于 2021-08-30 08:41:41
回答 3查看 778关注 0票数 1

我对雪花很陌生,当我和雪花一起工作的时候,我在下面的两个选项之间发生了冲突。

hour)

  • Multi-cluster
  1. 单仓X-大型 (16学分/ (with max clusters=2 & min clusters=2)和 (8学分/小时)

G 211

考虑到上述两种选择

性能的角度选择第二个选项,有什么优势吗?

注意事项:我知道多集群相对于单个仓库的优势。请分享您对这个特定场景的答案(当min =max时)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-31 01:41:43

所以在运行查询时发生的事情是。

属于,我将只使用single来表示单个实例,“multi”表示多实例集群,当我们运行一个查询时,它只在一个实例上运行。

从存储层读取\写入IO:

在这里,单一的IO是多个IO的两倍,因此,如果您的查询是IO饱和的,那么单变量是更好的选择。

并行步骤:

因此,如果在高基数列上有一个GROUP BY,那么单列和多列都应该是同样好的。如果基数较低,但行数为数十亿行,则较小的实例可能会提供更好的结果,因为这些复杂的步骤不能在单个实例的较大集群大小上中断。但是,如果您有许多并发查询,这很可能会丢失。

多个查询/噪声邻居:

如果您有数百个查询,那么更大的单个实例在启动这些查询时会更糟糕,因为它一次只具有较少的并发任务,而一个非常大的查询可以刷新缓存或控制集群,这意味着您停止处理普通/小型查询。其中-当拥有mutli集群时,如果只有一个“超大型”查询出现,您只会拖住一半的常规查询。

这也取决于您的加载模式,在我的上一份工作中,我们有用于回答仪表板、报表的读取查询的小型实例的自动缩放集群,我们允许它运行得有点过度,所以一切都很顺利。当我们的数据加载在第二个自动缩放的中型实例集群上运行时,当我们试图以最快/最便宜的方式加载数据时,我们是故意超载的。在非高峰时期,我们以编程的方式减少了自动崩溃的最大值,使负载几乎饿死。但是会通过“午夜”中节省的学分在大型实例上进行一些昂贵的再处理,而且我们的加载任务还能够拆分专用的LARGE+大小仓库来完成一次性重建,因为这都是IO绑定的工作,因此“中断”窗口越小,系统越好,IO规模成线性,因此总成本是相同的。

也就是说,“什么是最好的”实际上取决于你正在做什么,你的预算,以及你准备好的取舍。雪花的黄金之处--它不像一个经典的DB,你必须选择合适的大小,挑选一个,然后看着它,如果它在飞行中艰难地改变它。当我们的代码或雪花版本改变了一些关键SQL的性能时,我们多次这样做,我们会跳进去,将实例数或大小增加一倍或三倍,以克服这种情况,同时试图修复或处理SF问题,或者等待SF回滚。在几个小时内,通常花更多的学分并不是预算的刹车。这种灵活性还意味着您可以尝试一下,“如果我们尝试4倍小的实例会发生什么。”“哦,没什么.听着,我们刚省了一堆钱”..

票数 2
EN

Stack Overflow用户

发布于 2021-08-30 09:05:30

如果您有min=max=2,那么您将永久地运行2个仓库(只要它们没有挂起)。如果您像这样配置您的多集群仓库,那么您就失去了许多优势,但对于您的特定用例,我想这可能是有意义的。

票数 1
EN

Stack Overflow用户

发布于 2021-08-30 15:04:26

根据你的评论,以下是我的回答:

在这两种情况下,您将拥有相同的资源来处理您的查询。重要的区别在于运行单一的重查询。您可能知道,单个查询不能生成多个集群(尚未),因此当您在多集群仓库中运行一个查询时,将在其中一个大型仓库上处理该查询(并使用最多8个节点)。

如果在单个XL仓库上运行相同的查询,则它可以由(最多)16个节点执行。因此,如果您将运行大量需要更多内存和CPU的查询,那么使用单个XL仓库会更好。

关于并发性,有一个名为"MAX_CONCURRENCY_LEVEL“的参数。它的默认值是8,它限制了每个仓库并发执行的最大数量。如果不更改它,那么单个XL仓库将最多同时执行8个查询,而多集群仓库可以同时执行16个查询。

https://docs.snowflake.com/en/sql-reference/parameters.html#max-concurrency-level

您可以增加此参数,并在单个XL和多集群L仓库上提供相同的并发性。但是在这种情况下,当您一起运行重查询和轻查询时,您应该小心。因为一个查询可能使用仓库的大部分资源,而轻量级的查询可能会占用更少的资源和更长的时间。因此,我建议您使用多集群仓库,如果您有“相对”的轻量/并发查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68981182

复制
相关文章

相似问题

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