mysql デッドロックの原因: 2 つ以上のプロセスが実行中にリソースを求めて競合します。 MySQL には、テーブル レベルのロック、行レベルのロック、ページ ロックという 3 種類のロックがあります。その中でも、テーブルレベルのロックはオーバーヘッドが低く、ロックが速く、デッドロックがありません。
Mysql は、データベースにアクセスするために最も一般的に使用される標準化言語である SQL 言語を使用するリレーショナル データベース管理システムです。 mysqlを使用しているとデッドロックが発生することがありますが、原因は何でしょうか?
MySQL の 3 種類のロック:
テーブル レベルのロック: 低いオーバーヘッド、高速なロック、デッドロックなし、大きなロック粒度、高いロック競合の可能性最低の同時実行性。
行レベルのロック: オーバーヘッドが高く、ロックが遅い。デッドロックが発生する可能性がある。ロックの粒度は最も小さく、ロックの競合の可能性は最も低く、同時実行性は最も高くなります。
ページ ロック: コストとロック時間はテーブル ロックと行ロックの間です。デッドロックが発生します。ロックの粒度はテーブル ロックと行ロックの間で、同時実行性は平均です。
アルゴリズム:
next KeyLocks ロック、レコード (データ) を同時にロックし、レコードの前のギャップをロックします
ギャップ ロック、レコードはロックせず、ギャップのみを記録しますフロント
レコードロック ロック (ギャップのロックではなく、データをロック)
#つまり、実際には Next-KeyLocks=ギャップ ロックレコードロック ロック##どのような状況でデッドロックが発生するかいわゆるデッドロック
テーブル レベルのロックではデッドロックが発生しません。したがって、デッドロックの解決策は主に最も一般的に使用される InnoDB を対象とします。
デッドロックの鍵は次のとおりです: 2 つ (またはそれ以上)セッションロックの順序が矛盾しています。
デッドロック問題を解決する鍵は、異なるセッションを順番にロックすることです。
以上がmysqlのデッドロックの原因は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。