Применения обедающих философов проблемы в InnoDB, и использование выберите для обновления:обедающих философы, InnoDB, выберите для обновления
1) таблицы с 100000 вилками, представленное в таблице InnoDB с одним первичным ключом (fork)
2) захват вилок - это выбор для обновления, который задает случайный список между 2 и 20 первичными ключами в этой таблице, а «захват» - это точно один выбор для обновления в этом случайном списке вилок относительно 100 000 различных первичных ключей. Кстати, порядок списков ключей в предложении select является случайным.
3) Есть много более 5 мыслители, скажем, до 50 одновременных «» Операции захвата пересекающихся вилок
4) время мозгового обновляют другие столбцы для строк первичных ключей в шаге 2. время мысли никогда не бывает слишком длинным.
Вопрос: с innodb, является тупиком или голодом из-за несправедливости вообще в вышеупомянутом сценарии? Есть ли что-то, на что можно обратить внимание? (уровень изоляции считывается.)
Цель: использовать эту таблицу и первичные ключи строк блокировки для представления зависимостей для сложных сценариев обновления, чтобы перед выполнением последовательности обновлений для различных связанных таблиц (таблицы в последовательном порядке) и строки внутри, я определяю набор зависимостей, которые приравниваются к набору первичных ключей шага 1, а затем блокируют эти зависимости с выбором для обновления в начале транзакции. (Конечно, после выбора для обновления я запрашиваю зависимости, чтобы убедиться, что они не изменились.)
Как это возможно? 2 мыслителя делают это в одной команде select for update, которая указывает те же 2 вилки. Имеет ли mysql в операторе select for update или какой-либо реальной инструкции по обновлению, есть последовательность отдельных блокировок строк записи, которые зависят от порядка ключей в списке? –
Я пропустил, что это только один выбор. Но, тем не менее, я бы поставил «заказ по id» в конце выбора. В противном случае вы не можете быть уверены, что innodb сделает это за вас! – Argeman