Встречается на собеседованиях • сегодня
Что такое фантомное чтение
Фантомное чтение (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)`.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы