Встречается на собеседованиях • сегодня

В чем разница между грязным чтением и фантомным чтением

Грязное чтение (Dirty Read) — это чтение незафиксированных изменений из другой транзакции. Если та транзакция откатится, прочитанные данные будут невалидными.

Фантомное чтение (Phantom Read) — это ситуация, когда в рамках одной транзакции повторное чтение возвращает новые строки, добавленные другой транзакцией.

Пример:

java
// Dirty Read (уровень READ_UNCOMMITTED)
transaction1: UPDATE users SET balance = 100 WHERE id = 1; // не commit
transaction2: SELECT balance FROM users WHERE id = 1; // видит 100

// Phantom Read (уровень READ_COMMITTED)
transaction1: SELECT * FROM users WHERE age > 30; // вернуло 2 строки
transaction2: INSERT INTO users (age) VALUES (35); // commit
transaction1: SELECT * FROM users WHERE age > 30; // теперь 3 строки

Грязное чтение — это про незафиксированные данные, фантомное — про новые строки.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы