КаталогИндекс раздела
НазадОглавлениеВперед


5.2 Уровни изоляции

Свойство параллельности является одним из наиболее важных свойств транзакций, которые обеспечивают промышленные базы данных. Современные промышленные СУБД обеспечивают параллельную работу с одними и теми же данными огромного количества пользователей. Так, СУБД DB2 была протестирована при одновременной работе 60 тыс. пользователей; точных данных по Oracle у нас нет, но и здесь речь идет о десятках тысяч пользователей. В таких условиях важно, чтобы параллельно выполняемые транзакции не накладывались, а были изолированы друг от друга.

Стандарт SQL/92 определяет уровни изоляции транзакций в многопользовательской системе через отсутствие таких аномалий доступа к базе данных, которые могут в конечном итоге угрожать целостности данных. В стандарте различаются следующие аномалии:

Промышленные СУБД в том или ином объеме выполняют требования стандарта по дифференциации уровней изоляции, но при формально одном и том же уровне изоляции поведение транзакций может существенно различаться в разных СУБД.

Определение уровней изоляции в стандарте и в рассматриваемых нами СУБД сведено в таблицу:

Уровни изоляции SQL/92 Аномалии DB2 Oracle
А1 А2 А3 А4
READ UNCOMMITTED нет да да да UNCOMMITTED READ (UR) -
READ COMMITTED нет нет да да CURSOR STABILITY (CS) READ COMMITTED
REPEATABLE READ нет нет нет да READ STABILITY (RS) -
SERIALIZABLE нет нет нет нет REPEATABLE READ (RR) SERIALIZABLE
Аномалии:
    А1 - Потерянные изменения
    А3 - Неповторяющееся чтение
    А2 - Грязное чтение
    А4 - Фантом

Кроме названных, в Oracle имеется еще уровень изоляции READ ONLY - для только-читающих транзакций.

В Oracle требуемый уровень изоляции может быть установлен для сеанса соединения с базой данных - как одна из возможностей оператора ALTER SESSION или для отдельной транзакции оператором SET TRANSACTION. Синтаксис этих операторов показан на рис. 5.4.



Рисунок 5.4 - Операторы ALTER SESSION и SET TRANSACTION (Oracle)

В DB2 уровень изоляции устанавливается для приложения, и способы его установки различны для разных способов разработки приложений. При работе в среде DB2 Command Line Processor или DB2 Command Center уровень изоляции устанавливается перед соединением с базой данных оператором CHANGE ISOLATION:


Рисунок 5.5 - Операторы CHANGE ISOLATION (DB2)


НазадОглавлениеВперед
КаталогИндекс раздела