Mysql デッドロック解決策: 1. タイムアウトになるまで待機し (innodb_lock_wait_timeout=50s)、トランザクションを自動的にロールバックします; 2. デッドロック検出を開始し、トランザクションをアクティブにロールバックし、他のトランザクションの実行を継続します (innodb_deadlock_detect=on) )。
MySQL には 2 つのデッドロック処理メソッドがあります:
● タイムアウトになるまで待機 (innodb_lock_wait_timeout=50s)、トランザクションを自動的にロールバック。
# デッドロック検出を開始し、トランザクションを積極的にロールバックして、他のトランザクションの実行を継続できるようにします (innodb_deadlock_detect=on)。
パフォーマンス上の理由から、デッドロックの処理には通常、デッドロック検出が使用されます。
デッドロック検出
デッドロック検出の原理は、トランザクションを頂点、ロックを辺とする有向グラフを構築し、有向グラフにサイクルがあるかどうかを判断することです。サイクルではデッドロックが発生します。
ロールバック
デッドロックを検出した後、INFORMATION_SCHEMA.INNODB_TRX テーブルの trx_weight フィールドに基づいて、ロールバックする挿入、更新、または削除された行の数が最も少ないトランザクションを選択します。
以上がmysqlのデッドロックを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。