Oracle выбирает поведение обновления в запросе с предложением IN - PullRequest
0 голосов
/ 30 августа 2018

С учетом следующего запроса:

SELECT * FROM USER WHERE user_id in (10,20,30,40,50) FOR UPDATE

Как Oracle собирается заблокировать все эти строки? Будет ли он блокировать их одну за другой (во время сканирования индекса) ИЛИ Oracle каким-то образом заблокирует их все одновременно?

Что если вторая транзакция одновременно запускает следующий запрос:

SELECT * FROM USER WHERE user_id = 50 FOR UPDATE

Возможно, вторая транзакция МОЖЕТ получить блокировку для этой записи только потому, что первая транзакция еще не получила блокировку для этой конкретной записи (из-за последовательной блокировки строки по одной)?

Заранее спасибо,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...