SQL Server 2008 - выполнение запросов завершается вечно, хотя на самом деле работа выполнена - PullRequest
2 голосов
/ 06 мая 2010

Выполнение следующего простого запроса в SSMS:

ОБНОВЛЕНИЕ tblEntityAddress SET strPostCode = REPLACE (strPostCode, '', '')

Обновление данных (по крайней мере, в памяти) завершается менее чем за минуту. Я проверил это, выполнив другой запрос с уровнем изоляции транзакции, считанный незафиксированным. Однако запрос на обновление продолжается еще 30 минут. В чем здесь проблема? Это вызвано задержкой записи на диск?

ТИА

Ответы [ 3 ]

2 голосов
/ 06 мая 2010

В отдельном окне SSMS попробуйте выполнить следующее:

SELECT status, wait_type
FROM sys.dm_exec_requests
WHERE session_id = <SPID>

Просто замените на SPID, связанный с вашим запросом UPDATE (число в скобках после вашего имени входа в нижней строке).

Выполните несколько раз подряд и отметьте, что такое wait_type.Существует множество типов ожидания - посмотрите, что это такое (и дайте знать об этом), это может выделить причину.

Обновление: Цитаты из этой статьи MS KB :

IO_COMPLETION

Этот тип ожидания указывает, что SPID ожидает завершения запросов ввода-вывода.Когда вы заметили этот тип ожидания для SPID в системной таблице sysprocesses, вы должны определить узкие места на диске, используя счетчики монитора производительности, трассировку профилировщика, системную табличную функцию fn_virtualfilestats и параметр SHOWPLAN для анализа планов запросов, которые соответствуютСПИД.Вы можете уменьшить этот тип ожидания, добавив дополнительную пропускную способность ввода-вывода или распределив ввод-вывод между другими дисками.Вы также можете уменьшить количество операций ввода-вывода с помощью индексации, искать плохие планы запросов и искать нехватку памяти.

2 голосов
/ 06 мая 2010

Скорее всего, ваша транзакция заблокирована другой транзакцией, которая затронула tblEntityAddress.

Запустите sp_lock и посмотрите, заблокирован ли tblEntityAddress другим процессом.

0 голосов
/ 06 мая 2010

Еще одна вещь, которую следует учитывать, - это медленный триггер.

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