Ответ
READ_COMMITTED и все более строгие уровни (REPEATABLE_READ, SERIALIZABLE) предотвращают Dirty Write (грязную запись).
Почему: Dirty Write возникает, когда две параллельные транзакции изменяют одни и те же данные. Уровень READ_COMMITTED гарантирует, что транзакция не может изменять строку, которая была изменена другой незавершенной транзакцией. Это реализуется через механизмы блокировок или управления версиями данных (MVCC).
Пример на SQL-уровне:
-- Транзакция 1
BEGIN TRANSACTION;
UPDATE users SET name = 'Alice' WHERE id = 1; -- Блокировка строки
-- Транзакция 2 (параллельно)
BEGIN TRANSACTION;
UPDATE users SET name = 'Bob' WHERE id = 1; -- Эта команда будет ждать или завершится с ошибкой, пока транзакция 1 не завершится (COMMIT или ROLLBACK).
Практический вывод: Поскольку Dirty Write — это фундаментальная проблема согласованности, большинство СУБД предотвращают её даже на уровне READ_COMMITTED, который часто используется по умолчанию.