Субд лекции

Темы:

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

Подходы к разрешению проблем параллелизма в SQL претерпевали изменения по мере развития языка. Первоначально стандарт предписывал такую организацию одновременного выполнения операторов, чтобы это соответствовало ситуации, когда ни один из операторов не вводится до полного завершения предыдущего. В этой ситуации в любой момент времени только одна транзакция может иметь возможность изменять данные. Однако при большом числе одновременных корректирующих обращений такой подход может значительно снизить производительность системы. Поэтому (в тех случаях, когда это возможно, ищется компромисс между обеспечением строгой целостности базы данных в любой момент времени и производительностью.

В SQL-92 определены так называемые уровни изоляции (isolation level).

1.Уровень SERIALIZABLE (последовательное выполнение) -обеспечивает максимальную степень целостности и соответствует требованиям предыдущих стандартов. Обычно именно этот уровень устанавливается по умолчанию. При его выборе каждая транзакция выполняется изолированно.

2.Уровень REPEATABLE READ (повторяющееся чтение) - допускает вставку новой записи в таблицу, обрабатываемую транзакцией. При этом в принципе может возникать эффект так называемой фантомной вставки.

3.Уровень READ COMMITTED (чтение с фиксацией) - допускает выполнение запроса при условии, что результаты параллельных транзакций были зафиксированы.

4.Уровень READ UNCOMMITTED (чтение без фиксации) - допускает выполнение запроса независимо от того, были зафиксированы результаты параллельных транзакций или нет.

Если транзакция объявлена как READ ONLY, то это переводит ее на уровень READ UNCOMMITTED.

Уровень изоляции определяется в предложении SET TRANSACTION, которое имеет следующий синтаксис:

предыдущаяследующая