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