Мы используем MySQL с хранилищем Innodb Engine.
У нас есть «выравниваемая» среда, которая отправляет несколько одновременных запросов к таблице.
В основном это работает так:
У нас есть функция find_or_insert, которая делает это:
- находить()
-> на результат, если пусто -> вставить
-> по результату find ()
Мы используем неблокирующий драйвер MySQL, поэтому, по сути, когда мы запускаем этот небольшой алгоритм более одного раза одновременно, он запускает все находки перед вставкой первого результата ... и т. Д.
К сожалению, мы получаем эти ошибки:
«Обнаружен тупик при попытке получить блокировку; попробуйте перезапустить транзакцию»
Кто-нибудь может помочь с этим?
[EDIT]: Кроме того, я на самом деле не понимаю, зачем MySQL нужно блокировать таблицу, просто чтобы вставить новый элемент здесь. Изначально я считал, что виновником здесь является автоинкремент, поэтому я удалил его ... но я все еще получаю сообщение об ошибке. Есть ли способ предотвратить блокировку таблицы MySQL на вставках?