Я обнаружил, что транзакцию можно безопасно повторить
Тупиковые ситуации не опасны. Просто попробуйте еще раз.
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"