#sql-server #indexing #database-partitioning
#sql-server #индексирование #база данных-разделение
Вопрос:
У меня есть таблица с огромным объемом данных (около 2 ТБ), и я хочу повысить производительность, разделяя ее ежемесячно по столбцу CREATED_DATE, поскольку приложение работает с данными в течение одного месяца. В таблице есть 3 некластеризованных неуникальных индекса, 2 из них включают столбец CREATED_DATE .
Поэтому мне интересно, что происходит под капотом с этими индексами после выполнения разделения.
- Становятся ли индексы недействительными после разделения?
- Включает ли операция секционирования перестройку индекса или я должен перестроить их самостоятельно?
- Могут ли индексы, включающие столбец даты, быть перестроены для определенного раздела за раз, но не для всей таблицы, поскольку это может занять очень много времени?
Индексы создаются следующим образом:
CREATE NONCLUSTERED INDEX [IX_Table] ON [dbo].[Table](CREATED_DATE ASC, COL1 ASC, COL2 ASC, COL3 ASC)
INCLUDE (COL5, COL6, COL7, COL8, COL9, COL4, ...)
WITH (PAD_INDEX = OFF, ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, SORT_IN_TEMPDB = OFF, FILLFACTOR =80) ON [PRIMARY];
CREATE NONCLUSTERED INDEX [IX_Table_1] ON [dbo].[Table](COL4 ASC, COL3 ASC, CREATED_DATE ASC)
INCLUDE (COL10, COL11)
WITH (PAD_INDEX = OFF, ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, SORT_IN_TEMPDB = OFF, FILLFACTOR =80) ON [PRIMARY];
CREATE NONCLUSTERED INDEX [IX_Table_2] ON [dbo].[Table](COL9 ASC, COL3 ASC, COL2 ASC, ...)
INCLUDE (CREATED_DATE, COL5, COL6, COL7, COL8, COL4, COL10, COL11, ...)
WITH (PAD_INDEX = OFF, ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, SORT_IN_TEMPDB = OFF, FILLFACTOR =80) ON [PRIMARY];
Спасибо
Комментарии:
1. пожалуйста, определите «огромный объем данных». Aso, пожалуйста, опубликуйте определения таблиц и индексов
2. коэффициент заполнения 80 не поможет вашему размеру 2 ТБ, кстати….
3. @MitchWheat, не могли бы вы помочь мне прояснить другие вопросы о разделении?