Dirty read — чтение ещё не зафиксированного изменения другой транзакции. Non-repeatable read — повторное чтение одной строки видит уже другое зафиксированное значение.
В чём отличие аномалий грязного чтения (dirty read) и неповторяющегося чтения (non-repeatable read)?
Dirty read — чтение ещё не зафиксированного изменения другой транзакции. Non-repeatable read — повторное чтение одной строки видит уже другое зафиксированное значение.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Dirty read — чтение ещё не зафиксированного изменения другой транзакции. Non-repeatable read — повторное чтение одной строки видит уже другое зафиксированное значение.
При dirty read первая транзакция может откатиться, и прочитанное значение никогда не станет действительным. При неповторяющемся чтении другая транзакция успела commit между двумя SELECT. Это отличается от phantom read, связанного с изменением набора подходящих строк. Какие аномалии допускаются, зависит от уровня изоляции и реализации СУБД, а не только от наличия транзакции.