Описание тега isolation-level

Уровень изоляции определяет, какие данные SQL-транзакция может просматривать или получать доступ, в то время как другие транзакции работают с теми же данными.

Стандарт ACID определяет 4 уровня изоляции - чтение без фиксации, чтение с подтверждением, повторяемое чтение и сериализуемый. Чем выше уровень изоляции, тем больше гарантировано, что другая транзакция не сломает вашу, но тем меньше параллелизм может обрабатывать база данных. MySQL и MSSQL поддерживают все уровни изоляции, в то время как PostgreSQL и Oracle поддерживают только 2 наиболее распространенных : фиксированное чтение и сериализуемое.

Незавершенное чтение означает, что транзакция работает с последними доступными данными. На этом уровне изоляции возможно, что транзакция читает данные, которые еще не зафиксированы, и, возможно, будет откат и никогда не будет существовать.

Фиксация чтения - это самый базовый уровень изоляции, который гарантирует, что транзакции будут читать только уже сохраненные данные. Однако существует возможность для другой транзакции изменить данные после того, как первая транзакция прочитала их, но до того, как она изменила их.

Повторяющееся чтение гарантирует, что любое последующее чтение данных вернет тот же результат, что и первое чтение, что устраняет описанное выше состояние гонки.

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