Поделиться через


Настройка уровней изоляции транзакций

COM+ предоставляет разработчикам больше контроля над приложениями, позволяя настраивать уровни изоляции транзакций. Версии COM+ до COM+ 1.5 всегда использовали самый высокий уровень изоляции для транзакций. Хотя этот уровень гарантирует, что целостность данных всегда сохраняется, это может привести к проблемам с производительностью, таким как время ожидания, когда многие транзакции должны выполняться в большой базе данных. Благодаря настраиваемым уровням изоляции опытные разработчики могут увеличить параллелизм для повышения производительности и масштабируемости.

COM+ предоставляет следующие уровни изоляции транзакций.

Уровень Описание
Сериализовано Данные, считываемые текущей транзакцией, не могут быть изменены другой транзакцией до тех пор, пока текущая транзакция не завершится. Новые данные не могут быть вставлены, которые повлияют на текущую транзакцию. Это самый безопасный уровень изоляции и используется по умолчанию.
Повторяемое чтение Данные, считываемые текущей транзакцией, не могут быть изменены другой транзакцией до тех пор, пока текущая транзакция не завершится. Любой тип новых данных можно вставить во время транзакции.
Чтение зафиксировано Транзакция не может считывать данные, изменяемые другой транзакцией, которая не зафиксирована. Это уровень изоляции по умолчанию в Microsoft SQL Server.
Чтение без фиксации Транзакция может считывать любые данные, даже если она изменяется другой транзакцией. Это наименее безопасный уровень изоляции, но обеспечивает максимальный уровень параллелизма.
Любой Поддерживается любой уровень изоляции. Этот параметр чаще всего используется подчиненными компонентами, чтобы избежать конфликтов. Этот параметр полезен, так как любой подчиненный компонент должен быть настроен с уровнем изоляции, равным или меньше уровня изоляции его непосредственного вышестоящего компонента. Таким образом, подчиненный компонент, имеющий уровень изоляции, настроенный как Any, всегда использует тот же уровень изоляции, что и его непосредственный вышестоящий компонент. Если корневой объект в транзакции имеет его уровень изоляции, настроенный на Any, его уровень изоляции становится сериализованным.

 

Заметка

Если нижестоящий компонент настроен с более высоким уровнем изоляции, чем вышестоящий компонент, и пытается присоединиться к транзакции, возникает ошибка, и транзакция прерывается.

 

настройка уровня изоляции транзакций