MySQL の Deadlock 解決のためのメモ
こんにちは、 @kz_morita です。
今回は実際にであった MySQL の Deadlock と調査した内容を備忘録として残していきます。
エラー内容の確認 以下のようなサーバーエラーが発生していました。
java.sql.SQLTransactionRollbackException: (conn=100000) Deadlock found when trying to get lock; try restarting transaction Scala を用いているので java のエラーが出てますが、deadlock が起きていることがエラーログからわかりました。
SHOW ENGINE INNODB STATUS を確認 次にどのクエリで deadlock が発生しているのを特定するために、MySQL の SHOW ENGINE INNODB STATUS を確認します。
詳しい見方としてはこちらの記事が大変参考になります。
なぜあなたは SHOW ENGINE INNODB STATUS を読まないのか MySQL サーバーに入り、以下のコマンドで SHOW ENGINE INNODB STATUS の結果を確認できます。
mysql > pager less -S PAGER set to 'less -S' mysql > SHOW ENGINE INNODB STATUS\G; pager less -S を使うと読みやすい形式で表示されます。