ホームページ  >  記事  >  データベース  >  mysqlのデッドロックの原因は何ですか?

mysqlのデッドロックの原因は何ですか?

little bottle
little bottleオリジナル
2019-05-18 13:32:217061ブラウズ

mysql デッドロックの原因: 2 つ以上のプロセスが実行中にリソースを求めて競合します。 MySQL には、テーブル レベルのロック、行レベルのロック、ページ ロックという 3 種類のロックがあります。その中でも、テーブルレベルのロックはオーバーヘッドが低く、ロックが速く、デッドロックがありません。

mysqlのデッドロックの原因は何ですか?

Mysql は、データベースにアクセスするために最も一般的に使用される標準化言語である SQL 言語を使用するリレーショナル データベース管理システムです。 mysqlを使用しているとデッドロックが発生することがありますが、原因は何でしょうか?

MySQL の 3 種類のロック:

テーブル レベルのロック: 低いオーバーヘッド、高速なロック、デッドロックなし、大きなロック粒度、高いロック競合の可能性最低の同時実行性。

行レベルのロック: オーバーヘッドが高く、ロックが遅い。デッドロックが発生する可能性がある。ロックの粒度は最も小さく、ロックの競合の可能性は最も低く、同時実行性は最も高くなります。

ページ ロック: コストとロック時間はテーブル ロックと行ロックの間です。デッドロックが発生します。ロックの粒度はテーブル ロックと行ロックの間で、同時実行性は平均です。

アルゴリズム:

next KeyLocks ロック、レコード (データ) を同時にロックし、レコードの前のギャップをロックします

ギャップ ロック、レコードはロックせず、ギャップのみを記録しますフロント

レコードロック ロック (ギャップのロックではなく、データをロック)

#つまり、実際には Next-KeyLocks=ギャップ ロックレコードロック ロック

##どのような状況でデッドロックが発生するか

いわゆるデッドロック: 実行中にリソースの奪い合いにより複数のプロセスが待ち状態になり、外部からの力がなければ先に進めなくなる現象を指します。このとき、システムがデッドロック状態にある、またはシステムがデッドロックに陥っているといい、このように常に待ち合っているプロセスをデッドロックプロセスと呼びます。

テーブル レベルのロックではデッドロックが発生しません。したがって、デッドロックの解決策は主に最も一般的に使用される InnoDB を対象とします。


デッドロックの鍵は次のとおりです: 2 つ (またはそれ以上)セッションロックの順序が矛盾しています。

デッドロック問題を解決する鍵は、異なるセッションを順番にロックすることです。

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

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