Транзакции и блокировки - Уровни изоляции

Page / - Изменено Alexandr Fokin в 2023/01/08 19:24

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

Изменено Alexandr Fokin

в 2023/01/08 19:24

Оглавление

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

Уровень	Аномалия	Описание аномалии
Потерянные изменения Lost Update	Последовательное обновление строки таким образом, что последнее изменение полностью не учитывает результаты предыдущего и перезаписывает их.
READ UNCOMMITTED	Грязное чтение Dirty read	Считывания из БД данных/состояния, являющихся промежуточными или отмененными в будущем. Чтение изменений, которые внесены активной транзакцией, и на текущий момент не закомичены. Повторное чтение данных отобразить все изменения, выполненные другими транзакциями с момента предыдущего чтения, которые были закомичены.
READ COMMITTED	Неповторяющееся чтение Non-repeatable read	В рамках транзакции при повторном чтении одной и той-же строки (по условию ключу), значение может меняться (изменено другой транзакций) или же строка может быть удалена.
REPEATABLE READ	Фантомное чтение Phantom reads	В рамках транзакции при повторном чтении выборки, меняется кол-во строк (добавлены новые).
SERIALIZABLE	Выполнение происходит так, словно транзакции выполняются последовательно одна за другой в некотором порядке (при этом явно не влияя друг на друга)	-	Полное отсутствие перечисленных выше аномалий. Повторное прочтение данных всегда возвращает одинаковые результат.

Подходы к реализации изоляции.

Реализация
Изоляции на основе блокировок
Протокол изоляции на основе снимков Snapshot Isolation	MVCC

Уровни изоляции и несогласованность данных
http://www.t-sql.ru/post/nolock.aspx

PostgreSQL: Documentation: 15: 13.2. Transaction Isolation
https://www.postgresql.org/docs/current/transaction-iso.html

ept/hermitage
Hermitage: Testing transaction isolation levels
https://github.com/ept/hermitage

Consistency Models
https://jepsen.io/consistency