Уровни изоляции:
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