Выполняет ли Snowflake «один» один запрос на нескольких узлах или на одном узле в кластере? - PullRequest
0 голосов
/ 29 апреля 2020

Когда «одиночный» запрос выполняется в кластере «Снежинка», будет ли он использовать (если доступно) столько параллельных узлов для выполнения запроса, либо только один узел в кластере?

Я специально ищу стратегию масштабирования, чтобы ускорить следующий запрос

INSERT INTO x SELECT FROM y

Ответы [ 2 ]

2 голосов
/ 29 апреля 2020

В большинстве случаев Snowflake будет пытаться выполнить запрос параллельно и использовать все узлы в кластере, но в редких случаях он может выполняться только на разделе узлов. Например, если источник данных настолько мал, если есть один файл для загрузки с помощью команды COPY, или вы вызываете хранимую процедуру JavaScript для обработки данных.

Вот простая демонстрация. Следующий запрос будет выполняться только на 1 узле, независимо от того, сколько узлов имеет кластер:

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

Поскольку источник данных является генератором (который не может считываться параллельно). Вы можете попробовать запустить его на складах различного размера, и вы увидите, что он завершится примерно за 55 секунд (если на складе нет другой рабочей нагрузки).

Как упоминали Симеон и Майк, запрос может быть выполнен в одном кластере в многокластерных складах. Многокластерные склады предназначены для увеличения параллелизма.

0 голосов
/ 29 апреля 2020

В контексте многокластерного хранилища , только один узел.

Так что большие вопросы лучше выполнять на узлах большего размера, а большие объемы запросов лучше всего подходят для кластеров узлов правильного размера (из среднего времени ожидания), но, конечно, это стоит дороже ... но если у вас был фиксированный пул запросов, общая стоимость которых должна быть одинаковой при выполнении их в более широком кластере, только с меньшим временем настенных часов.

Это хорошее чтение также для топических c из масштабирования

...