Поделитесь опытом успешного использования и проблем, возникающих в связи с использованием.
Лично я сегодня наткнулся на то, что мне ко всем чертям заблочило почти всю таблицу, несмотря на то, что я делаю SELECT id FROM… FOR UPDATE и следующей же операцией UPDATE WHERE id = $id.
Версия MySQL — 5.1.31 на убунте.
А workflow у меня таков:
У меня несколько консольных приложений, которые паралельно забирают из таблицы очереди задачки. Т.е. SELECT id FROM queue LIMIT 1 FOR UPDATE и если запись выбралась, то UPDATE queue SET locked = 1 WHERE id = $id
Код написан так, что бы не держать блокировку дольше нескольких миллисекунд и конкретно эта часть не отваливается. Бывало отваливались другие части и по какой-то мне не понятной причине оказалось что почти все записи в таблице залочились, хотя такого происходить не должно.
Инфы толком нарыть в и-нете пока не получилось о багах и особенностях, пока продолжаю копать.
>UPDATE WHERE id = $id
Зачем здесь where? Если 2 отдельных where то нет ли вероятности, что оно просто апдейтило не связанные с SELECT FOR UPDATE варианты?