これは、より効率的にする価値のないエッジケースだと思います。同じ行を取得しようとすると、3つのセッションを取得する必要があることに注意してください。これはまれなことです。そして、あなたはロールバックをしました-これもまれです。したがって、発生したデッドロックはやり過ぎですが、修正する価値はありません。このため、あらゆる場所でデッドロックを処理できるように準備する必要があります。
参考までに、これがGaleraクラスターの3つのノードである場合、COMMIT
でエラーが発生します。 コードが処理する必要があること。このトランザクションを(ロールバックまたはコミットを使用して)複数のノードに複数回適用すると、奇妙なことがさらに多く発生する可能性があります。
さて、あなたの質問です...おそらく、スレッドの1つが排他ロックを取得し、もう1つが「デッドロック」ではなく「待機」でヒットしたため、デッドロックは発生しませんでした。