Почему эти 2 похожих запроса в Snowflake имеют очень разную производительность? - PullRequest
0 голосов
/ 21 января 2020

См. Эти 2 изображения профиля запросов Snowflake. Они выполняют аналогичную работу (обновите то же самое соединение таблицы 370M с небольшими таблицами (один случай - 21 КБ, другой - 9 КБ), но результат производительности - 5x). Запрос завершился примерно за 15 минут с использованием одного xsmall VDW: Быстрый запрос завершился примерно за 15 минут

И этот запрос обновляет ту же таблицу из 370M строк, объединяется даже с небольшой таблицей DIM из 9k, но все еще выполняется через 1 час 30 минут Тем не менее, работает через 90 минут

Из профиля запроса я не могу объяснить, почему второй запрос выполняется намного медленнее, чем первый. Второй запускается сразу после первого.

Есть идеи? Спасибо

Ответы [ 2 ]

2 голосов
/ 21 января 2020

во втором запросе вы видите байт, разлитых в локальное хранилище - 272 ГБ. Это означает, что работа, выполняемая при обработке, была слишком большой, чтобы поместиться в память кластера, и поэтому пришлось перетекать в локально подключенный SSD. С точки зрения производительности это дорогостоящая операция, и я думаю, вероятно, почему второй запрос занял так много времени (запрос 1 имел только 2 ГБ разливов). Самым простым решением этого является увеличение размера VDW - или вы можете переписать запрос:

https://docs.snowflake.net/manuals/user-guide/ui-query-profile.html#queries - слишком большой для размещения в памяти

Обратите внимание, что запрос 1 сумел прочитать 100% своего набора данных из памяти VDW - что очень эффективно - тогда как query2 мог найти там только половину своего набора данных и поэтому должен был выполнить удаленный ввод (чтение из облака) хранение), чтобы получить остальное. Запросы / работа, выполненная до выполнения запросов 1 и 2, извлекла эту информацию в локальный кеш VDW и сохраняет эту информацию на основе LRU.

1 голос
/ 22 января 2020

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

...