snowflake-cloud-data-platform - Snowflake 是否在集群中的多个节点或单个节点上执行“单个”单个查询?
问题描述
当在 Snowflake 集群上执行“单个”查询时,它会使用(如果可用)尽可能多的并行节点来执行查询,还是只使用集群中的一个节点?
我正在专门寻找有关如何加快以下查询的扩展策略
INSERT INTO x SELECT FROM y
解决方案
大多数时候,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 所提到的,一个查询可以在多集群仓库中的一个集群中执行。多集群仓库用于增加并发性。
推荐阅读
- symfony - LDAP 和 Symfony:无法使用 dn 完成搜索
- sql - 计算持续时间 SQL 的总和
- anylogic - 从文件夹资源中的其他路径删除数据
- azure-devops - 需要在规划下的 Azure DevOps 中添加自定义值
- json - 嵌套 JSON 提取第一级键并添加到 Python 3 列?
- mysql - 我无法使用导入向导将 csv 文件导入 mysql 表
- java - 在 Postman 中将类对象作为参数传递
- python - 如何存储来自用户的多行输入并将其打印在单独的行中?
- swift - 将 userInfo 中的闭包传递给 NotificationCenter,在运行时从编译器获取神秘消息
- python - Python 中的迭代会抛出不想要的结果