❓ Что такое non-repeatable read в контексте работы с БД?
Non-repeatable read (неповторяемое чтение) — это ситуация, когда одна транзакция считывает одни и те же данные дважды в рамках одной транзакции, но получает разные результаты из-за изменений, внесённых другой транзакцией между этими чтениями.
📌 Пример:
- Транзакция A считывает данные:
SELECT balance FROM accounts WHERE id = 1;
Результат: balance = 1000.
- Транзакция B обновляет те же данные и фиксирует изменения:
UPDATE accounts SET balance = 1500 WHERE id = 1; COMMIT;.
- Транзакция A снова считывает данные в рамках той же транзакции:
SELECT balance FROM accounts WHERE id = 1;
Результат: balance = 1500.
В результате данные, полученные Транзакцией A, отличаются в первом и втором чтении.
Non-repeatable read возможен на уровне изоляции READ COMMITTED. Чтобы предотвратить такие ситуации, используется уровень REPEATABLE READ, который гарантирует неизменность данных, считанных транзакцией, до её завершения.
Post #668
1.91K
- 👍 6
- ❤ 3
- 🔥 1