Найти в Дзене

Уровни изоляций транзакций

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

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

Read uncommitted – уровень изоляции, при котором допускается DirtyRead, nonrepeateable read, phantom read,

Read committed – Борется с Dirty Read. В примере ниже происходит изменение строки с id =1, но в конце происходит роллбэк. Из-за того, текущий что поток ожидает, приходит другой поток Other в бд, читает данные, которые на конец транзакции будут не актуальны. PostgreSQL даже в Read uncommitted не позволяет производить грязное чтение. В MySql прочитаются не актуальные данные.

Repeatable read – борется с non repeatable read и dirty read. Когда в одной транзакции выгребаются несколько раз данные, а между ними приходит другая транзакция и эти данные меняет. Получается в первом вытаскивании одни данные, при втором другие, получаются не консистентные данные. В Postgresql также решает проблему фантомного чтения, в других БД может не решаться.

Serializable – решает все вышеуказанные проблемы, транзакции проходят по очереди. При этом снижается перформанс бд.

При увеличении уровня изоляции транзакций перфоманс БД снижается.

Примеры тут:
https://gitlab.com/JavaBooster/education/-/tree/master/spring/src/main/java/spring/jdbc/isolation

Выплаты, пособия от государства, экономические новости читать здесь: https://t.me/+fbTtq1Tpb_45NGUy