Я Обход ошибки вокруг MySQL «Обнаружен тупик при попытке получить блокировку; попробуйте перезапустить транзакцию »
Я узнал, что транзакция может быть безопасно предпринята повторно
Замки не опасны. Просто попробуйте еще раз.
http://dev.mysql.com/doc/refman/5.0/en/innodb-deadlocks.html
Был один оператор "super insert..select", который вставлялся в таблицу узких мест после выбора объединенной комбинации двух других таблиц и использования условий под-операторов в таблице узких мест, а также в нескольких крошечных таблицах.
Горловина бутылки "ждала блокировки", без сомнения, она ожидала блокировки записи. InnoDB, казалось, идеально подходит. (для таблицы с интенсивной записью) И все сомнения относительно этого одного утверждения теперь ушли.
Но теперь возникает проблема: на каждые 100 выполнений оператора примерно 1 или 2 из них завершатся неудачно из-за тупика. Я считаю, что тупик возникает только между экземплярами "super insert..select". Я установлю автоматическое повторение этого утверждения, но мне было интересно
Вопрос: Есть ли в MySQL JDBC возможность включить автоповтор операторов после получения исключения, или мне нужно написать собственный код для этого?
com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction
В этом случае у меня нет команд запуска транзакции или остановки транзакции. Только одно утверждение "super insert..select"