SQL Server - дефрагментация индекса выполняется вечно - PullRequest
0 голосов
/ 11 декабря 2018

Возникла проблема с моей версией SQL Server Standard 11.0.6020.0.Впервые я заметил проблему около полутора месяцев назад.Происходит то, что при выполнении моего текущего обслуживания на сервере работа выполняется вечно.Вот пример команды, которая будет выполняться в течение дней:

 ALTER INDEX [IX_NonClustedIndex] ON [Database].[dbo].[Table] REBUILD WITH 
 (SORT_IN_TEMPDB = ON, ONLINE = OFF)  

Теперь этот оператор обычно завершается за короткое время:

StartTime = 2018-12-05 02: 00: 01.057

EndTime = 2018-12-05 02: 00: 01.673

Но по какой-то причине неожиданно возникли проблемы.Я погуглил эту проблему до смерти, и единственная подсказка, которую я нашел, была где-то статья о том, что база данных tempdb может быть повреждена.Итак, я остановил службы.Удалил мои базы данных tempdb и перезапустил сервер.Протестировано заявление об изменении индекса и BAM!Сделано в секундах.Думая, что я решил проблему;Я пошел по своим делам.Исправление длилось около 4 недель, прежде чем все началось снова.Повторил то, что я сделал, прежде чем подумать, что я получу еще несколько недель и нет.На этот раз исправление длилось всего несколько дней.

Есть идеи, что вызывает мою проблему или что мне нужно исследовать?Заранее спасибо.

** НАСТРОЙКА СЕРВЕРА ** Это на Windows Server 2012 R2 Standard.2 процессора с 8 ядрами каждый.192 ГБ ОЗУ.В базе данных tempDB имеется 20 файлов данных, каждый размером 5 ГБ.

1 Ответ

0 голосов
/ 04 января 2019

Я наконец-то понял, как решить проблему, но я не знаю, в чем причина проблемы.Я выполняю следующие команды DBCC перед этапом обслуживания:

DBCC FREEPROCCACHE

DBCC FREESYSTEMCACHE ('tempdb')

Я считаю, что из-за кэшированного плана выполнения дефрагментация индекса была переполнена.

...