Встречается на собеседованиях • сегодня
Какие знаешь проблемы у каждого уровня изоляции
Read Uncommitted:
- Грязное чтение (Dirty Read) – можно читать незафиксированные изменения других транзакций, что может привести к некорректным данным.
Пример:
java
// Транзакция 1: UPDATE users SET balance = 100 WHERE id = 1 (не закоммичена)
// Транзакция 2: SELECT balance FROM users WHERE id = 1 → увидит 100 (грязное чтение)Read Committed:
- Неповторяющееся чтение (Non-Repeatable Read) – при повторном чтении одной строки в рамках транзакции данные могут измениться.
Пример:
java
// Транзакция 1: SELECT balance FROM users WHERE id = 1 → 50
// Транзакция 2: UPDATE users SET balance = 70 WHERE id = 1 (коммит)
// Транзакция 1: SELECT balance... → 70 (значение изменилось)Repeatable Read:
- Фантомное чтение (Phantom Read) – появление новых строк при повторном запросе.
Пример:
java
// Транзакция 1: SELECT COUNT(*) FROM users → 10
// Транзакция 2: INSERT INTO users (...) (коммит)
// Транзакция 1: SELECT COUNT(*) → 11 (появилась "фантомная" строка)Serializable:
- Высокая блокировка ресурсов – может привести к дедлокам и снижению производительности из-за строгой изоляции.
Пример:
java
// Транзакция 1: SELECT * FROM users FOR UPDATE (блокирует таблицу)
// Транзакция 2: пытается выполнить INSERT → ждёт завершения Транзакции 1
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы