Как разделить на основе месяца и года в хранилище данных SQL Azure

Я собираюсь использовать ADF для копирования 5 миллиардов строк в хранилище данных SQL Azure. Azure SQL DWH по умолчанию распределит таблицу на 60 распределений, но я хочу добавить еще 50 разделов на основе месяца и года следующим образом:

PARTITION ( DateP  RANGE RIGHT FOR VALUES   
      (  
        '2015-01-01', 2015-02-01', ......2018-01-01','2018-02-01','2018-03-01','2018-04-01','2018-5-01',.......
        ))

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

2015-01-01 00:30:00Как вы думаете, мой подход к разбиению верен?

2 ответа

5B строк / (50 разделов x 60 распределений) = 1,7 миллиона строк / раздел в среднем

Вероятно, это слишком много разделов, но если у вас много запросов на один месяц, это может стоить того. Вы определенно захотите дефрагментировать ваши хранилища колонок после загрузки.

Я склонен согласиться с Дэвидом, что это, вероятно, излишнее количество разделов. Вы захотите убедиться, что у вас достаточно равномерное распределение данных, и с 1,7 миллионами строк или около того вы окажетесь на нижней стороне. Вероятно, вы можете перейти к разделам на основе квартала (например, "2017-12-31", "2018-03-01", "2018-06-30"), чтобы получить хорошие результаты для производительности запросов. Это даст вам 4 раздела в год с 2015 года (или 20 всего). Итак, математика такова:

5B строк / (20 разделов * 60 распределений) = 4.167M строк / раздел.

Хотя количество разделов имеет значение для сценариев удаления разделов, это таблица фактов с индексами columnstore, которая будет выполнять дополнительный уровень исключения сегментов индекса во время запроса. Чрезмерное разделение может сделать ситуацию хуже, а не лучше.

В руководстве Microsoft указано, что при определении размера разделов, особенно для индексированных таблиц columnstore в Azure DW, МИНИМАЛЬНЫЙ том ДОЛЖЕН составлять 60 миллионов строк на раздел. Все, что ниже, НЕ может обеспечить оптимальную производительность. Логика этого состоит в том, что должно быть МИНИМУМ 1 M строк на распределение на раздел. Поскольку каждый созданный раздел будет внутренне создавать шестьдесят дополнительных дистрибутивов, минимум работает до 60M на раздел, который предлагается создать.

Другие вопросы по тегам