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

Page / - Изменено Alexandr Fokin в 2022/11/25 22:08

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

Изменено Alexandr Fokin

в 2022/11/25 22:08

Оглавление

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

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

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

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

Consistency Models
https://jepsen.io/consistency