Режим блокировки PESSIMISTIC_WRITE в критериях против выбора для обновления

Есть ли существенная разница в производительности при использовании PESSIMISTIC_WRITE в качестве LockMode в критериях гибернации в качестве альтернативы для выбора для запроса на обновление.

Вариант использования включает в себя следующие моменты:

  1. Ограничения на значения в нескольких столбцах, такие как статус, время
  2. Сортировка по нескольким столбцам
  3. Выберите только первый ряд для обработки.

Эта обработка выполняется одновременно несколькими машинами / потоками. В настоящее время я использую критерии гибернации, и это приводит к превышению времени ожидания получения блокировки несколько раз, что приводит к блокированию всех других запросов.

1 ответ

В этом случае FOR UPDATE "требуется" для правильного параллелизма:

BEGIN;
SELECT x ... FROM t ... FOR UPDATE;
use `x` for whatever
UPDATE t ...;
COMMIT;

Без FOR UPDATE, значение x может измениться, тем самым потенциально лишает законной силы UPDATE,

Другие вопросы по тегам