Продвинутый
В чем разница между Read Committed и Repeatable Read?
Read Committed (Чтение зафиксированного):
- Транзакция видит только закоммиченные данные других транзакций.
- Защищает от "Грязного чтения".
- Минус: Возможны неповторяющееся чтение и фантомы. (Дефолт в PostgreSQL).
Repeatable Read (Повторяющееся чтение):
- Транзакция видит данные такими, какими они были на момент начала этой транзакции (Snapshot).
- Защищает от "Грязного" и "Неповторяющегося" чтения.
- Минус: Возможны ошибки сериализации (Serialization Failure), если две транзакции попытаются обновить одну и ту же строку одновременно. Приложению придется делать ретрай.