Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

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

Уровни изоляции транзакцийСуществуют различные Уровни изоляции транзакций. Под уровнем изоляции понимается способность транзакции видеть данные вне своей области определения, т. е. изменяемые другими транзакциями. Уровни изоляции, определенные в стандарте SQL:2003, перечислены в табл. 7.10. Если уровень изоляции транзакции установлен в READ ONLY, внутри нее нельзя выполнить какое-либо изменение данных (т. е. инструкции UPDATE, INSERT или DELETE). Oracle — единственная из СУБД “большой тройки”, в которой реализован уровень изоляции READ ONLY. При попытке модификации данных в транзакции, открытой только для чтения, будет сгенерирована ошибка. Устанавливается обработка на уровне инструкций, и этот режим используется далее в сеансе по умолчанию. В определении уровней изоляции в транзакции СУБД DB2 9.5 наблюдается некоторая путаница. То, что в стандарте SQL:2003 определено как SERIALIZABLE, в DB2 называется REPEATABLE READ. Это высший уровень изоляции в DB2. Стандартное ключевое слово SERIALIZABLE поддерживается в качестве синонима. Уровень REPEATABLE READ стандарта SQL:2003 в DB2 называется READ STABILITY. В этой СУБД определен и дополнительный уровень — CURSOR STABILITY. Последний уровень, CURSOR STABILITY, сходен с уровнем READ COMMITED стандарта SQL; он используется в DB2 по умолчанию. В сущности, он гарантирует то, что одна строка данных останется неизменной. Уровень UNCOMMITED READ определен так же, как и в стандарте SQL:2003; блокировки не устанавливаются, так что остается вероятность “грязного” чтения. При установке подключения из приложения уровень изоляции может быть определен с помощью директивы PREP или BIND API. В процессоре командной строки может быть использована следующая инструкция. В Microsoft SQL Server 2008 поддерживаются все четыре описанных выше уровня изоляции и дополнительный уровень SNAPSHOT, который гарантирует, что данные, прочитанные в течение транзакции, будут согласовываться с данными на начало транзакции. Данный уровень транзакции устанавливается на весь сеанс, а не только на одну транзакцию. Чтобы переопределить уровень изоляции в сеансе, используется следующая инструкция.