sql >> データベース >  >> RDS >> Mysql

コミットがデッドロックを引き起こさない理由

    これは、より効率的にする価値のないエッジケースだと思います。同じ行を取得しようとすると、3つのセッションを取得する必要があることに注意してください。これはまれなことです。そして、あなたはロールバックをしました-これもまれです。したがって、発生したデッドロックはやり過ぎですが、修正する価値はありません。このため、あらゆる場所でデッドロックを処理できるように準備する必要があります。

    参考までに、これがGaleraクラスターの3つのノードである場合、COMMITでエラーが発生します。 コードが処理する必要があること。このトランザクションを(ロールバックまたはコミットを使用して)複数のノードに複数回適用すると、奇妙なことがさらに多く発生する可能性があります。

    さて、あなたの質問です...おそらく、スレッドの1つが排他ロックを取得し、もう1つが「デッドロック」ではなく「待機」でヒットしたため、デッドロックは発生しませんでした。




    1. メソッドJPQLのクエリの検証に失敗しました

    2. MySql:Tinyint(2)とtinyint(1)-違いは何ですか?

    3. BEFORE INSERTトリガーは、重複キー更新クエリの挿入のすべての行に対して実行されますか

    4. エラー:gemネイティブ拡張のビルドに失敗しました(rails 3.2.3上のmysql2)