Разница между типами изоляции транзакций REPEATABLE_READ и SERIALIZABLE заключается в следующем:
- REPEATABLE_READ предотвращает грязные и неповторяющиеся чтения, но не исключает фантомное чтение. 24 Это достигается за счёт общих блокировок на все данные, которые читает каждая инструкция в транзакции, и все блокировки удерживаются до завершения транзакции. 4
- SERIALIZABLE защищает от всех трёх аномалий согласованности: предотвращает не только грязные и неповторяющиеся чтения, но и фантомные чтения. 4 Для этого размещаются блокировки диапазона в диапазоне ключевых значений, которые соответствуют условиям поиска для всех инструкций в транзакции, и эти блокировки удерживаются до конца транзакции. 4
Таким образом, SERIALIZABLE обеспечивает более высокую степень изоляции, исключая влияние одной транзакции на другую в момент выполнения. 2