В SQL Server 2005, когда запрос блокирует вставку или обновление в той же или другой таблице (таблицах)? - PullRequest
2 голосов
/ 24 сентября 2011

В прошлом я всегда думал, что запрос на выборку не будет блокировать другие вставки sql. Однако недавно я написал запрос, который занимает много времени (более 2 минут) для выбора данных из таблицы. Во время выбора, несколько операторов SQL вставки были истекли.

Если выбрать блоки вставки, каков будет способ предотвратить тайм-аут, не вызывая грязного чтения?

У меня есть вариант использования изолированного снимка, но в настоящее время у меня нет доступа к изменению базы данных клиента, чтобы включить «ALLOW_SNAPSHOT_ISOLATION».

Спасибо

Ответы [ 2 ]

2 голосов
/ 24 сентября 2011

Когда блок запроса Select вставляет или обновляет тот же или другие таблицы?

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

При уровне изоляции readcommitted без дополнительных подсказок о блокировке снятые блокировки S обычно снимаются, как только считываются данные. Однако для repeatable read или serializable они будут удерживаться до конца транзакции (оператор для отдельного выбора, не запущенного в явной транзакции).

serializable часто снимает блокировки диапазона, что вызывает дополнительную блокировку сверх того, что вызвано удерживанием блокировок на фактически прочитанных строках и страницах.

0 голосов
/ 24 сентября 2011

READPAST может быть то, что вы ищете - проверьте эту статью .

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