Запросы SQL выполняются медленно или зависают после DBCC DBReindex или Alter Index - PullRequest
1 голос
/ 09 февраля 2010

All

SQL 2005 sp3, размер базы данных около 70 ГБ. Время от времени, когда я переиндексирую все мои индексы во всех моих таблицах, интерфейс, кажется, зависает или работает очень медленно. Это запросы, поступающие из внешнего интерфейса, а не хранимые процедуры на сервере SQL. Внешний интерфейс использует соединение JTDS JDBC для доступа к SQL Server. Если мы остановим и перезапустим веб-службы, отправляющие запросы, проблема, похоже, исчезнет. Насколько я понимаю, у нас есть пул соединений, в котором мы повторно используем соединения и не устанавливаем новое соединение каждый раз.

Эта проблема возникает не каждый раз, когда мы переиндексируем. Я пробовал оба способа с dbcc dbreindex и alter index online = on и сортировал в tempdb = on.

Любое понимание того, почему эта проблема возникает время от времени и как ее предотвратить, было бы очень полезно.

Заранее спасибо,

Гэри Эббот

1 Ответ

1 голос
/ 09 февраля 2010

Когда это произойдет в следующий раз, посмотрите sys.dm_exec_requests , чтобы увидеть, что блокирует запросы от клиентов. Blocking_session_id укажет, кто блокирует, а wait_type и wait_resource укажут, что блокирует. Вы также можете использовать Activity Monitor для того же эффекта.

В предварительно выращенной базе данных перестроение индекса в режиме онлайн не будет блокировать нормальную активность (выберите / вставьте / обновите / удалите). Нагрузка на сервер может увеличиться в результате перестроения индекса в сети, что может привести к более медленным ответам, но не должно вызывать блокировку.

Если база данных предварительно не увеличена, то дополнительные выделения для перестроения индекса будут вызывать события роста базы данных, которые могут быть очень медленными, если оставить значение по умолчанию с шагом 10% и без мгновенной инициализации файла включена , Во время события роста базы данных вся активность в этой базе данных заморожена, и это может быть вашей проблемой, даже если индексы перестраиваются онлайн. Опять же, Activity Monitor и sys.dm_exec_requests ясно продемонстрировали бы, что это происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...