Я создаю сайт для заказа ресурсов.У меня есть пул ресурсов (скажем, 10 ресурсов), и когда пользователь хочет заказать ресурс, я проверяю, какой из них бесплатный, и назначаю его пользователю.Я использую таблицу MYSQL innoDB и блокирую строку, используя
update ResourceTable SET SOMEFIELD='1'
, но если первая транзакция еще не завершилась и теперь другой пользователь ищет (используя
select * FROM ResourceTable WHERE SOMEFIELD!='1' LOCK IN SHARE MODE
,пользователь ожидает завершения 1-й транзакции (хотя есть и другие бесплатные ресурсы). Если я удалю LOCK IN SHARE MODE
, я получу ресурс, который должен быть заблокирован.
Как разрешить нескольким пользователямупорядочить ресурсы без ожидания?
(хотя я как-то выбираю строки, которые не заблокированы -> не существуют в MYSQL)