Уровни изоляции транзакций определяют, насколько одна транзакция видит изменения, сделанные другими транзакциями.
Какие проблемы решают уровни изоляции транзакций Read Committed, Repeatable Read и Serializable?
Уровни изоляции транзакций определяют, насколько одна транзакция видит изменения, сделанные другими транзакциями.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Уровни изоляции транзакций определяют, насколько одна транзакция видит изменения, сделанные другими транзакциями.
READ COMMITTED — транзакция видит только те изменения, которые были зафиксированы (committed) другими транзакциями. Это предотвращает чтение "грязных" данных, но не гарантирует, что при повторном чтении тех же данных они останутся неизменными (возможны неповторяющиеся чтения).
REPEATABLE READ — гарантирует, что если транзакция прочитала данные, то при повторном чтении этих же данных в рамках той же транзакции они не изменятся, даже если другие транзакции их изменят и зафиксируют. Это предотвращает неповторяющиеся чтения, но не всегда защищает от фантомных чтений (появления новых строк).
Пример:
- В READ COMMITTED транзакция может прочитать строку, затем другая транзакция изменит и зафиксирует эту строку, и при повторном чтении первая транзакция увидит обновленные данные.
- В REPEATABLE READ первая транзакция всегда будет видеть первоначальные данные, прочитанные в начале, даже если другая транзакция их изменила и зафиксировала.