Я прочитал, что если я использую IsolationLevel.ReadUncommitted, запрос не должен вызывать никаких блокировок. Однако, когда я проверил это, я увидел следующую блокировку:
Resource_Type: HOBT
Request_Mode: S (Shared)
Что такое замок HOBT? Что-то связанное с HBT (блокировка кучи или двоичного дерева)?
Почему я все еще получу замок S?
Как избежать общей блокировки при запросах без включения функции моментального снимка уровня изоляции?
Я тестирую это на SQLServer 2008, и опция снимка отключена. Запрос выполняет только выбор.
Я вижу, что Sch-S требуется, хотя SQL Server, похоже, не показывает его в моем запросе блокировки. Почему он все еще выдает общий замок? Согласно с:
УСТАНОВИТЬ УРОВЕНЬ ИЗОЛЯЦИИ ТРАНЗАКЦИЙ (Transact-SQL)
Транзакции, выполняющиеся на
READ UNCOMMITTED
уровне, не создают общих блокировок, чтобы другие транзакции не могли изменять данные, считываемые текущей транзакцией.
Так что я немного растерялся.