Каков наилучший подход в Snowflake для операций удаления на действительно большой таблице? - PullRequest
1 голос
/ 25 октября 2019

Мы думаем о переносе нашего ODS из S3 в Snowflake, но у нас есть некоторые проблемы с производительностью. Удаление 39 миллионов строк из таблицы строк размером 1,5 миллиарда (это будет на меньшей стороне) заняло 15 минут на небольшом складе x, 8 на небольшом и 5 на среднем. Мы можем бросать деньги в более крупных случаях, но на самом деле не хотим этого делать, пока не будут изучены все другие меры.

Мы также думали о внедрении системы разделов вручную, чтобы разбить таблицу на части, но было быРасходы разработчика на создание вспомогательных функций.

Есть ли у Snowflake система секционирования, о которой я не знаю, что эквивалентно SQL Server? Я знаю, что это достижимо, но поменять разделы было здорово.

Спасибо за любые отзывы!

Ответы [ 2 ]

1 голос
/ 25 октября 2019

В Snowflake нет таких разделов, как SQL Server, но метод хранения данных в Snowflake - это микроразделы, которые похожи ... вроде. Вы можете использовать службу автоматической повторной кластеризации Snowflake, чтобы выровнять эти микроразделы по одному или нескольким полям, что сделает удаление этих ключей намного более быстрой операцией. Использование полей, которые вы удаляете, для кластеризации ваших таблиц, должно немного помочь.

0 голосов
/ 26 октября 2019

Подход к выполнению явной кластеризации на таблице требует вдумчивого планирования, учитывающего различные шаблоны доступа и рабочие нагрузки (загрузки, запросы и т. Д.), Затрагивающие ту же таблицу и соображения стоимости, поэтому я не уверен, что выполнение явной кластеризации для случая удалениядостаточно веская причина для изменения макета таблицы.
Что если вместо удаления из большого списка использовать CTAS, чтобы создать еще одну таблицу на выживших строках и удалить исходную таблицу?

...