Это вопрос из двух частей о высоком параллелизме.
Часть 1
Если следующий запрос, который обновляет только одну строку из пула постоянно уменьшающихся строк, вызывается с массивнымпараллелизм: есть ли вероятность того, что два запроса обновят одну и ту же строку, так что allocated
установлен на 1
, где allocated
уже уже установлен на 1
другим запросом, выполняющимся одновременно?
UPDATE foo SET allocated = 1 WHERE allocated = 0 LIMIT 1
Часть 2
Если предположить нет для части 1, существует ли возможность, если теперь тот же запросзаключен в транзакцию с некоторыми другими SELECT
запросами только для чтения, которые могут появляться до или после того же UPDATE
запроса выше?
Обратите внимание, что это несколько похоже на предыдущийвопрос , но у этого вопроса не было второй части.