[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-bazy-dannykh-kakie-sushchestvuyut-urovni-izolirovannosti-tranzaktsiy":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":17,"progress":18,"seo":19},1143,"kakie-sushchestvuyut-urovni-izolirovannosti-tranzaktsiy",35,"bazy-dannykh","Базы данных","🗄️","Какие существуют уровни изолированности транзакций?","Уровни изолированности транзакций — стандартизированные степени защиты от аномалий параллельного доступа. Чем выше уровень, тем сильнее изоляция, но ниже пропускная способность.\n\n### Уровни изолированности (SQL-стандарт)\n\n| Уровень | Грязное чтение | Неповторяемое чтение | Фантомное чтение | Потерянное обновление |\n|---------|:-:|:-:|:-:|:-:|\n| Read Uncommitted | Да | Да | Да | Нет |\n| Read Committed | Нет | Да | Да | Нет |\n| Repeatable Read | Нет | Нет | Да | Нет |\n| Serializable | Нет | Нет | Нет | Нет |\n\n### Описание уровней\n\nRead Uncommitted — транзакция видит незафиксированные изменения других транзакций. Самый слабый уровень, практически не используется.\n\nRead Committed — транзакция видит только зафиксированные изменения других транзакций. Уровень по умолчанию в PostgreSQL и Oracle. При повторном чтении одной и той же строки значение может измениться, если другая транзакция успела зафиксироваться между чтениями.\n\nRepeatable Read — при повторном чтении строки значение не меняется (создаётся снимок данных на момент начала транзакции). По стандарту допускает фантомные чтения, но в PostgreSQL фантомы тоже исключены на этом уровне за счёт SSI.\n\nSerializable — результат параллельного выполнения транзакций эквивалентен их последовательному выполнению. Максимальная изоляция, минимальная производительность.\n\n### Уровни по умолчанию в популярных СУБД\n\n| СУБД | Уровень по умолчанию | Реализация |\n|------|---------------------|------------|\n| PostgreSQL | Read Committed | MVCC (снимки) |\n| MySQL (InnoDB) | Repeatable Read | MVCC + gap locks |\n| Oracle | Read Committed | MVCC |\n| SQL Server | Read Committed | Блокировки (или MVCC с RCSI) |\n\n### Настройка в SQL и Spring\n\n```sql\n-- SQL\nSET TRANSACTION ISOLATION LEVEL REPEATABLE READ;\nBEGIN;\n-- ...\nCOMMIT;\n```\n\n```java\n\u002F\u002F Spring\n@Transactional(isolation = Isolation.REPEATABLE_READ)\npublic void processOrder(Long orderId) {\n    \u002F\u002F ...\n}\n```\n\n> **На собеседовании:** интервьюер ожидает таблицу «уровень — допустимые аномалии» и понимание компромисса: выше изоляция — больше блокировок — ниже throughput. Частая ошибка — не знать уровень по умолчанию используемой СУБД (PostgreSQL — Read Committed, MySQL — Repeatable Read).","","middle",[15,16],"databases","performance",[],null,{"title":20,"description":21,"ogTitle":22,"ogDescription":23,"keywords":24,"schemaAnswer":34,"featuredSnippetReady":35},"Уровни изолированности транзакций (SQL-стандарт) — Gymterview","Уровни изоляции транзакций: Read Uncommitted, Read Committed, Repeatable Read, Serializable. Допустимые аномалии, уровни по умолчанию в PostgreSQL и MySQL.","Уровни изолированности транзакций: от Read Uncommitted до Serializable — Gymterview","Четыре уровня изоляции транзакций: допустимые аномалии, уровни по умолчанию в PostgreSQL, MySQL, Oracle.",[25,26,27,28,29,30,31,32,33],"уровни изоляции","isolation level","Read Committed","Repeatable Read","Serializable","Read Uncommitted","MVCC","PostgreSQL","MySQL","SQL-стандарт определяет 4 уровня: Read Uncommitted (допускает грязное чтение), Read Committed (видит только зафиксированные данные, по умолчанию в PostgreSQL), Repeatable Read (снимок на начало транзакции, по умолчанию в MySQL InnoDB), Serializable (эквивалент последовательного выполнения). Чем выше уровень, тем сильнее изоляция, но ниже пропускная способность.",true]