Московский государственный университет имени М.В.Ломоносова
Опубликован: 05.01.2004 | Доступ: свободный | Студентов: 9033 / 1076 | Оценка: 4.04 / 3.84 | Длительность: 10:03:00
ISBN: 978-5-94774-539-9
Лекция 7:

Транзакции в базах данных

< Лекция 6 || Лекция 7: 1234 || Лекция 8 >

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

Стандарт SQL-92 определяет уровни изоляции, установка которых предотвращает определенные конфликтные ситуации.

Введены следующие четыре уровня изоляции:

  • SERIALIZABLE - последовательное выполнение (используется по умолчанию). Этот уровень гарантирует предотвращение всех описанных выше конфликтных ситуаций, но, соответственно, при нем наблюдается самая низкая степень параллелизма;
  • REPEATABLE READ - повторяющееся чтение. На этом уровне разрешено выполнение операторов INSERT, приводящих к конфликтной ситуации "фантомная вставка". Этот уровень целесообразно использовать, если на выполняющиеся SQL-операторы не влияет добавление новых строк;
  • READ COMMITTED - фиксированное чтение. Этот уровень позволяет получать разные результаты для одинаковых запросов, но только после фиксации транзакции, повлекшей изменение данных;
  • READ UNCOMMITTED - нефиксированное чтение. Здесь возможно получение разных результатов для одинаковых запросов без учета фиксации транзакции.

В следующей таблице приводится формальное описание уровней изоляции.

Уровень изоляции Предотвращение конфликтной ситуации
неповторяющееся чтение (non-repeatable read) "грязное" чтение (dirty read) потерянное обновление (lost update) фантомная вставка (phantom insert)
SERIALIZABLE + + + +
REPEATABLE READ + + + -
READ COMMITTED - + + -
READ UNCOMMITTED - - + -
< Лекция 6 || Лекция 7: 1234 || Лекция 8 >