Уровни изоляции транзакций
Существуют различные Уровни изоляции транзакций. Под уровнем изоляции понимается способность транзакции видеть данные вне своей области определения, т. е. изменяемые другими транзакциями. Уровни изоляции, определенные в стандарте 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, который гарантирует, что данные, прочитанные в течение транзакции, будут согласовываться с данными на начало транзакции. Данный уровень транзакции устанавливается на весь сеанс, а не только на одну транзакцию. Чтобы переопределить уровень изоляции в сеансе, используется следующая инструкция.