2

jOOQデータベース抽象化レイヤーを使用して MySql データベースと通信しています。

次のエラーが発生し続けます。

SQL [null]; Deadlock found when trying to get lock; try restarting transaction 

これは、テーブルへの約 500 行の一括挿入中です。これらの一括挿入の複数が異なるスレッドから一度に試行される可能性があります。

デッドロックの原因は何ですか?どうすれば回避できますか?

4

1 に答える 1

2

従来のデッドロックは、トランザクションが A をロックしてから B をロックしようとしたときに、別のトランザクションが B をロックしてから A をロックしようとしたときに、どちらも完了できない状況につながる場合です。特定のリソースに保留中のロックが多すぎる場合、MySQL は別の種類のデッドロックを生成します。

SHOW PROCESSLIST「ロックを待機中」のプロセスがいくつあるかを確認する必要があります。並んでいる人が多すぎるため、失敗した人は単に運が悪いだけかもしれません.

于 2012-08-18T19:32:41.393 に答える