Вы не говорите RDBMS, поэтому я предполагаю простую схему блокировки с S
и X
блокировками.Вы говорите.
Транзакция в Serializable IsolationLevel устанавливает блокировки чтения для операторов выбора.Есть две транзакции, выбирающие некоторый диапазон.Оба получают блокировки чтения.
Но затем первая транзакция обновляет или добавляет новое значение в выбранном диапазоне и фиксирует.
Это было бы невозможно, если вторая транзакция уже имеет блокировку чтения в диапазоне.Придется подождать, пока вторая транзакция не снимет свою блокировку.Если вторая транзакция также попытается обновить диапазон, это приведет к взаимоблокировке.