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