Оглавление
- 1 Изоляция (системы баз данных)
- 1.1 Основы изоляции транзакций
- 1.2 Грязное чтение
- 1.3 Неповторяемое чтение
- 1.4 Фантомное чтение
- 1.5 Стратегии предотвращения неповторяемых чтений и фантомных чтений
- 1.6 Уровни изоляции
- 1.7 Уровень изоляции по умолчанию
- 1.8 Критика определений изоляции ANSI SQL
- 1.9 Сравнение уровней изоляции с явлениями чтения
- 1.10 Полный текст статьи:
- 2 Изоляция (системы баз данных) — Википедия
Изоляция (системы баз данных)
-
Основы изоляции транзакций
- Изоляция транзакций предотвращает несогласованность данных между транзакциями.
- Существуют четыре уровня изоляции: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.
-
Грязное чтение
- Происходит, когда транзакция читает данные, которые были изменены другой транзакцией.
- На уровне READ UNCOMMITTED транзакция может получить обновленные данные.
- На уровнях READ COMMITTED, REPEATABLE READ и SERIALIZABLE транзакция получает исходные данные.
-
Неповторяемое чтение
- Происходит, когда транзакция дважды читает одни и те же данные, и между чтениями происходит обновление.
- На уровнях READ UNCOMMITTED и READ COMMITTED транзакция получает обновленные данные.
- На уровнях REPEATABLE READ и SERIALIZABLE транзакция получает исходные данные.
-
Фантомное чтение
- Происходит, когда транзакция дважды читает данные, и между чтениями вставляются или удаляются строки.
- На уровнях READ UNCOMMITTED, READ COMMITTED и REPEATABLE READ транзакция получает новый набор данных.
- На уровне SERIALIZABLE транзакция получает исходный набор данных.
-
Стратегии предотвращения неповторяемых чтений и фантомных чтений
- Управление параллелизмом на основе блокировок: транзакция фиксируется после фиксации или отката предыдущей транзакции.
- Многовариантное управление параллелизмом: транзакция фиксируется немедленно, но может возникнуть конфликт фиксации.
-
Уровни изоляции
- Сериализуемый: самый высокий уровень изоляции, требует снятия блокировок в конце транзакции.
- Повторяемое чтение: сохраняет блокировки чтения и записи до конца транзакции, но не управляет блокировкой диапазона.
- Чтение зафиксировано: сохраняет блокировки записи до конца транзакции, но снимает блокировки чтения.
- Чтение незафиксированным: самый низкий уровень изоляции, допускает “грязное” чтение.
-
Уровень изоляции по умолчанию
- Уровень изоляции по умолчанию в разных СУБД варьируется.
- Большинство баз данных позволяют пользователю устанавливать любой уровень изоляции.
-
Критика определений изоляции ANSI SQL
- Определения уровней изоляции ANSI SQL подвергаются критике за двусмысленность и неточность.
-
Сравнение уровней изоляции с явлениями чтения
- Сериализуемая аномалия не тождественна сериализуемому уровню изоляции.