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

Почему выбрал бы Repeatable Read для таблицы пользователей, где каждый пользователь может изменять только свою строку

Repeatable Read обеспечивает консистентность данных при чтении, предотвращая "фантомные чтения". В сценарии, где пользователи изменяют только свои строки, конкурентные транзакции не будут мешать друг другу, так как блокируются только изменяемые строки.

Пример:

java
// Транзакция 1 (пользователь 1)
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
// SELECT balance FROM users WHERE id = 1 → 100
// UPDATE users SET balance = 90 WHERE id = 1

// Транзакция 2 (пользователь 2)
connection.setTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
// SELECT balance FROM users WHERE id = 2 → 200
// UPDATE users SET balance = 180 WHERE id = 2

text

Преимущества:
- Гарантирует, что повторные чтения одной строки вернут одинаковые значения
- Не блокирует всю таблицу, только конкретные строки
- Подходит для read-modify-write операций в пределах одной записи

Недостатки:
- Может привести к deadlock'ам при неправильном порядке обновлений
- Не защищает от фантомных чтений (но в данном сценарии это не проблема)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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