MySQL JDBC: есть ли опция для автоматической повторной попытки после тупика InnoDB?

Я Работаю над ошибкой MySQL «Обнаружена тупиковая ситуация при попытке получить блокировку; попробуйте перезапустить транзакцию »

Я обнаружил, что транзакцию можно безопасно повторить

Тупиковые ситуации не опасны. Просто попробуйте еще раз.
http://dev.mysql.com/doc/refman/5.0/en/innodb-deadlocks.html

Был единственный оператор "super insert..select", вставленный в узкое место table после выбора объединенной комбинации из двух других таблиц и использования условий подвыражений в таблице узких мест, а также нескольких крошечных таблиц.

Узкое горлышко «ожидало блокировки», оно, несомненно, ожидало блокировки записи. 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"

9
задан Community 23 May 2017 в 02:03
поделиться