ホームページ  >  記事  >  データベース  >  MySQL データベースのロック メカニズムの概要

MySQL データベースのロック メカニズムの概要

不言
不言転載
2018-11-27 16:14:332981ブラウズ

この記事では、MySQL データベースのロック メカニズムについて説明します。必要な方は参考にしていただければ幸いです。

MySQL ロック メカニズムの概要

  1. データベース ロック メカニズムとは、単にデータベースがさまざまな共有リソースを使用してデータの一貫性を確保することを意味します。同時アクセスを秩序正しく行うために設計されたルール。

  2. あらゆる種類のデータベースには対応するロック メカニズムが必要であるため、MySQL も例外ではありません。

  3. MySQL データベースには、独自のアーキテクチャ特性により、さまざまなデータ ストレージ エンジンがあり、特定のアプリケーション シナリオの要件を満たすために、それぞれのアプリケーション シナリオの特性が異なります。各ストレージ エンジンのロック メカニズムは、要件に合わせて最適化され、直面する特定のシナリオに合わせて設計されています。そのため、さまざまなストレージ エンジンのロック メカニズムもまったく異なります。

  4. 一般に、MySQL ストレージ エンジンは、行レベルのロック、ページレベルのロック、テーブルレベルのロックという 3 つのタイプ (レベル) のロック メカニズムを使用します。

行レベルのロック (行レベル)

  1. 行レベルのロックは、一般に排他的ロックを指します。つまり、ロックされた行は変更または削除できず、他のセッションによってのみ選択できます。

  2. 排他ロックは、書き込みロック、または短縮して X ロックとも呼ばれます。その名前が示すように、トランザクションがデータ行に対して排他ロックを取得する場合、排他ロックは他のロックと共存できません。他のトランザクションはその行に対して他のロックを取得できません。

  3. 行レベルのロックの最大の特徴は、ロックされるオブジェクトの粒度が非常に小さいことです。これは、現在主要なデータベース管理ソフトウェアによって実現されているロックの粒度の中で最も小さいものでもあります。

  4. ロックの粒度が非常に小さいため、ロック リソースの競合の可能性も低くなり、アプリケーションに可能な限り多くの同時処理能力を与え、一部のアプリケーションの全体的なパフォーマンスを向上させることができます。 -同時実行アプリケーション システム。

  5. 行レベルのロックには同時処理機能という大きな利点がありますが、多くの欠点ももたらします。

  6. リソースのロックの粒度が非常に小さいため、ロックの取得と解放のたびに実行する必要がある処理が多くなり、必然的に消費量も大きくなります。

  7. さらに、行レベルのロックはデッドロックが最も発生しやすいものでもあります。

テーブル レベルのロック (テーブル レベル)

  1. テーブル レベルのロックは、テーブル全体を直接ロックします。ロックされていると、他のプロセスはテーブルに書き込むことができません。書き込みロックがある場合、他のプロセスは読み取りを許可されません。

  2. 行レベルのロックとは対照的に、テーブルレベルのロックは、MySQL ストレージ エンジンの中で最も詳細なロック メカニズムです。

  3. このロック機構の最大の特徴は、実装ロジックが非常にシンプルで、システムへの悪影響が最小限であることです。したがって、ロックの取得と解放は非常に高速です。

  4. テーブルレベルのロックはテーブル全体を一度にロックするため、私たちを悩ませているデッドロックの問題を回避できます。

  5. もちろん、ロックの粒度が大きいと、リソース競合の可能性が非常に高くなり、同時実行性が大幅に低下するという悪影響があります。

ページ レベルのロック (ページ レベル)

  1. ページ レベルのロックは、独自のタイプのロックです。 MySQL レベルは、他のデータベース管理ソフトウェアではあまり一般的ではありません。

  2. ページ レベルのロックの特徴は、ロックの粒度が行レベルのロックとテーブル レベルのロックの間であるため、ロックと同時処理能力を取得するために必要なリソースのオーバーヘッドが大きくなるということです。また、上記 2 つの間のどこかにあります。

  3. さらに、ページレベルのロックと行レベルのロックによってもデッドロックが発生する可能性があります。

概要

  1. データベース内でリソースをロックするプロセスでは、ロックされたリソースの粒度が小さくなるにつれて、同じ量のデータをロックするために必要なメモリの量は増加しており、実装アルゴリズムはますます複雑になります。

  2. ロックされたリソースの粒度が減少すると、アプリケーションのアクセス要求がロック待機に遭遇する可能性も減少し、システム全体の同時実行性が増加します。

  3. MySQL では、テーブル レベルのロックは MyISAM、MEmory、CSv などの一部の非トランザクション ストレージ エンジンによって使用され、行レベルのロックは主に InnoDB ストレージによって使用されます。エンジンと MySQL Cluster ストレージのページレベルのロックは、主に BerkeleyDB ストレージ エンジンのロック方法です。 #########################################

以上がMySQL データベースのロック メカニズムの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。