Должен ли я добавить чтение, зафиксированное после УСТАНОВКИ УРОВНЯ ИЗОЛЯЦИИ SET TRANSACTION?


9

Внутри хранимой процедуры у меня есть следующее: (SQL Server 2008)

 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
 BEGIN TRANSACTION getStuff
 BEGIN TRY 
    /*  some selects, updates, etc, etc. */
    ....
    COMMIT TRANSACTION getStuff
 END TRY
 BEGIN CATCH 
   ...
 END CATCH

Поскольку это основано на транзакциях, я думал, что остальные соединения с базой данных не будут затронуты SERIALIZABLE.

Нужно ли неявно устанавливать уровень изоляции для чтения, зафиксированного после моей фиксации? Повлияет ли это на другие соединения между сервером приложений и сервером базы данных?

Ответы:


6

Команда есть TRANSACTION ISOLATION LEVEL, нет SERVER ISOLATION LEVEL. Это только изменяет уровень изоляции для области транзакции.


5

Нет, вам не нужно неявно возвращать уровень изоляции для чтения зафиксированных.

Из книг онлайн .

Если вы используете SET TRANSACTION ISOLATION LEVEL в хранимой процедуре или триггере, когда объект возвращает управление, уровень изоляции сбрасывается до уровня, действующего на момент вызова объекта. Например, если вы установили REPEATABLE READ в пакете, а затем пакет вызывает хранимую процедуру, которая устанавливает уровень изоляции SERIALIZABLE, параметр уровня изоляции возвращается к REPEATABLE READ, когда хранимая процедура возвращает управление пакету.


3

Отправленная вами команда просто запускает транзакцию в SP TRANSACTION ISOLATION LEVEL SERIALIZABLE. Для других соединений по умолчанию используется уровень изоляции по умолчанию - чтение зафиксировано (если явно не указан другой уровень изоляции).

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


-3

Довольно новый алгоритм, который позволяет избежать большинства недостатков предыдущих подходов. Он использует оптимистический подход, позволяющий проводить транзакции без блокировки. Когда транзакция хочет зафиксировать ее, она проверяется и прерывается, если выполнение не было сериализуемым. Более подробная информация обо всех приложениях доступна по адресу: http://writeulearn.com/relational-database-transactions/


Это не похоже на ответ на вопрос ....
RDFozz
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.