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

Page / - Изменено Alexandr Fokin в 2025/09/20 11:28 

Уровни изоляции | Isolation levels 
Изменено Alexandr Fokin
в 2025/09/20 11:28

Оглавление

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

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

Внутренние ссылки:
Дочерние страницы:
Обратные ссылки:
•	Механизмы
•	ACID

ACID

Уровни изоляции и несогласованность данных
http://www.t-sql.ru/post/nolock.aspx
PostgreSQL: Documentation: 15: 13.2. Transaction Isolation
https://www.postgresql.org/docs/current/transaction-iso.html
К чему может привести ослабление уровня изоляции транзакций в базах данных
https://habr.com/ru/company/otus/blog/501294/

ept/hermitage
Hermitage: Testing transaction isolation levels
https://github.com/ept/hermitage
Consistency Models
https://jepsen.io/consistency