首页 > 解决方案 > Snowflake 是否在集群中的多个节点或单个节点上执行“单个”单个查询?

问题描述

当在 Snowflake 集群上执行“单个”查询时,它会使用(如果可用)尽可能多的并行节点来执行查询,还是只使用集群中的一个节点?

我正在专门寻找有关如何加快以下查询的扩展策略

INSERT INTO x SELECT FROM y

标签: snowflake-cloud-data-platform

解决方案


大多数时候,Snowflake 会尝试并行运行查询并使用集群中的所有节点,但在极少数情况下,它可能只在节点的一个分区上运行。例如,如果数据源非常小,如果要使用 COPY 命令提取一个文件,或者您正在调用 JavaScript 存储过程来处理数据。

这是一个简单的演示。无论集群有多少节点,以下查询将仅在 1 个节点上运行:

create or replace table dummy_test (id varchar) as 
select randstr(2000, random()) from table(generator(rowcount=>500000));

因为数据源是一个生成器(不能并行读取)。您可以尝试在各种大小的仓库上运行它,您会看到它会在 55 秒左右完成(如果仓库中没有其他工作负载)。

正如 Simeon 和 Mike 所提到的,一个查询可以在多集群仓库中的一个集群中执行。多集群仓库用于增加并发性。


推荐阅读