Сколько строк будет заблокировано с помощью SELECT… ORDER BY xxx LIMIT 1 FOR UPDATE?

У меня есть запрос со следующей структурой:

SELECT ..... WHERE status = 'QUEUED' ORDER BY position ASC LIMIT 1 FOR UPDATE;

Это инструкция SELECT для одной таблицы для таблицы InnoDB. Поле позиция (INT NOT NULL) имеет индекс на это. status имеет значение ENUM и также индексируется.

SELECT ... FOR UPDATE страница руководства говорит, что блокирует все строки, которые он читает. Правильно ли я понял, что в этом случае будет заблокирована только одна строка? Или, скорее, он заблокирует всю таблицу?

Можно ли определить, какие строки будут заблокированы с помощью запроса EXPLAIN ? Если да - как? Объяснение запроса в пустой таблице показывает следующее:

1;'SIMPLE';'job';'index';<null>;'index_position';[34,...];<null>;1;'Using where'
32
задан Vladislav Rastrusny 17 April 2011 в 16:21
поделиться