ホームページ >データベース >mysql チュートリアル >mysqlのデッドロックを解決するにはどうすればよいですか?

mysqlのデッドロックを解決するにはどうすればよいですか?

青灯夜游
青灯夜游オリジナル
2019-05-22 18:36:2412251ブラウズ

Mysql デッドロック解決策: 1. タイムアウトになるまで待機し (innodb_lock_wait_timeout=50s)、トランザクションを自動的にロールバックします; 2. デッドロック検出を開始し、トランザクションをアクティブにロールバックし、他のトランザクションの実行を継続します (innodb_deadlock_detect=on) )。

mysqlのデッドロックを解決するにはどうすればよいですか?

MySQL には 2 つのデッドロック処理メソッドがあります:

● タイムアウトになるまで待機 (innodb_lock_wait_timeout=50s)、トランザクションを自動的にロールバック。

# デッドロック検出を開始し、トランザクションを積極的にロールバックして、他のトランザクションの実行を継続できるようにします (innodb_deadlock_detect=on)。

パフォーマンス上の理由から、デッドロックの処理には通常、デッドロック検出が使用されます。

デッドロック検出

デッドロック検出の原理は、トランザクションを頂点、ロックを辺とする有向グラフを構築し、有向グラフにサイクルがあるかどうかを判断することです。サイクルではデッドロックが発生します。

ロールバック

デッドロックを検出した後、INFORMATION_SCHEMA.INNODB_TRX テーブルの trx_weight フィールドに基づいて、ロールバックする挿入、更新、または削除された行の数が最も少ないトランザクションを選択します。

以上がmysqlのデッドロックを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。