#sql-server #indexing #sql-server-2016
#sql-сервер #индексирование #sql-server-2016
Вопрос:
Я получаю SQL Server 2016 (SP2-CU2) и таблицу разделов (2 ТБ пространства, например, 10 миллиардов записей, среднее значение 250 млн записей за один раздел месяц) с неуникальным и некластеризованным индексом и запускаю enable (rebuild) с помощью обычной команды:
ALTER INDEX [IX_name_Partition] ON [dbo].[TBL_name_Partition] REBUILD PARTITION = ALL
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF,
ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
GO
Он работает в течение 12 часов, и кто знает, как долго он вообще может работать.
Есть идеи, как получить оценку / прогресс для его работы?
Самые популярные темы, связанные с ИТ-темами (сценарии, которые я пробовал, но, к сожалению, это совсем не помогает):
UPD! P.S. Через 19 часов это перестроение было успешно завершено.
Комментарии:
1. Невозможно оценить ход перестроения, но если ваше разбиение производится по дате или по другому постоянно увеличивающемуся столбцу, вам, вероятно, не нужно перестраивать ВСЕ разделы, только последний. В любом случае, почему бы вам не перестраивать по 1 разделу за раз, чтобы оценить, сколько времени это займет, чтобы продлить это время до оставшихся разделов?
2. Насколько велика ваша таблица? Я имею в виду ГБ, а не количество записей. 12 часов кажутся преувеличенными, но если ваша таблица составляет около 400 ГБ, а на вашем сервере всего 4 ГБ оперативной памяти, это возможно
3. @sepupic, спасибо за вопрос, обновленный размер и реальное количество строк таблицы. Что касается индекса, он был отключен, к сожалению, я не могу перестроить только один раздел для отключенного индекса.
4. Я не знаю, насколько велик был ваш индекс (надеюсь, он был намного меньше вашей таблицы), но 2 ТБ — это действительно большой размер, я думаю, вам следует проверить размер автоматического роста вашего файла данных и вашего журнала. Я думаю, что ваш сервер теперь тратит много времени на расширение вашей базы данных и, в частности, журнала.
5. Может быть, мне следует explain…To перестроить индекс означает создать новый индекс, а затем удалить старый. Ваш новый индекс будет иметь размер, не меньший размера отключенного индекса. Итак, в вашей БД должно быть: пространство данных для размещения вашего нового индекса, пространство данных для сортировки, поскольку вы использовали SORT_IN_TEMPDB = OFF, и для этого требуется, чтобы журнал был достаточно большим, чтобы вместить эту огромную транзакцию