Какие плюсы и минусы Repeatable read

«Какие плюсы и минусы Repeatable read» — вопрос из категории Базы данных, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Плюсы:

  • Гарантирует, что данные, прочитанные в транзакции, не изменятся другими транзакциями до её завершения.
  • Уменьшает проблему "неповторяемого чтения" (non-repeatable read), так как другие транзакции не могут изменять уже прочитанные данные.

Минусы:

  • Может привести к блокировкам, так как удерживает shared-блокировки на прочитанных данных до конца транзакции.
  • Не защищает от фантомного чтения (phantom reads) — другие транзакции могут добавлять новые строки.
  • Может снижать производительность из-за длительных блокировок.

Пример в SQL:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
BEGIN TRANSACTION;
SELECT * FROM Users WHERE age > 20; -- Данные не изменятся другими транзакциями
COMMIT;