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

Что такое фантомное чтение

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

Пример:

java
// Транзакция 1
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
Statement stmt1 = connection.createStatement();
ResultSet rs1 = stmt1.executeQuery("SELECT * FROM users WHERE age > 20");
// Допустим, вернулось 5 строк

// Транзакция 2 (параллельно)
connection2.createStatement().executeUpdate("INSERT INTO users VALUES (6, 'Alex', 25)");

// Транзакция 1 повторяет запрос
ResultSet rs2 = stmt1.executeQuery("SELECT * FROM users WHERE age > 20");
// Теперь вернулось 6 строк — появилась "фантомная" строка

text

**Как избежать:**  
Использовать уровень изоляции `SERIALIZABLE` или блокировки (`SELECT ... FOR UPDATE`). В Spring можно использовать `@Transactional(isolation = Isolation.SERIALIZABLE)`.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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