DBMS 同時実行制御: タイムスタンプとロックベースのプロトコル

同時実行制御とは何ですか?

同時実行制御 データベース管理システムにおける同時管理の手順です。neoお互いに競合することなく操作できます。 これにより、データベース トランザクションが同時に正確に実行され、それぞれのデータベースのデータ整合性を侵害することなく正しい結果が得られるようになります。

すべてのユーザーがデータを読み取るだけであれば、同時アクセスは非常に簡単です。 彼らが互いに干渉することはできません。 ただし、実際のデータベースでは、読み取り操作と書き込み操作が混在するため、同時実行性が課題となります。

DBMS 同時実行制御は、主にマルチユーザー システムで発生するこのような競合に対処するために使用されます。 したがって、同時実行制御は、XNUMX つ以上のデータベース トランザクションが同時に実行されるデータベース管理システムが適切に機能するために最も重要な要素です。neo通常、同じデータへのアクセスが必要です。

同時実行の潜在的な問題

DBMS 同時実行制御方式を使用するときに直面する可能性のある問題をいくつか示します。

  • 失われたアップデート 複数のトランザクションが同じ行を選択し、選択された値に基づいて行を更新すると発生します。
  • コミットされていない依存関係の問題は、別のトランザクションによって更新された行を XNUMX 番目のトランザクションが選択した場合に発生します (ダーティリード)
  • 非反復読み取り XNUMX 番目のトランザクションが同じ行に数回アクセスしようとして、毎回異なるデータを読み取るときに発生します。
  • 間違った概要の問題 これは、XNUMX つのトランザクションが繰り返されるデータ項目のすべてのインスタンスの値の要約を取得し、XNUMX 番目のトランザクションがその特定のデータ項目のいくつかのインスタンスを更新するときに発生します。 このような状況では、結果として得られる概要は正しい結果を反映していません。

同時実行方式を使用する理由

同時実行制御方式が DBMS である理由は次のとおりです。

  • 競合するトランザクション間の相互排他による分離を適用するには
  • 読み取り-書き込みおよび書き込み-書き込みの競合問題を解決するには
  • 実行障害を常に保持することでデータベースの一貫性を維持するため
  • システムは、同時トランザクション間の相互作用を制御する必要があります。 この制御は、同時制御方式を使用して実現されます。
  • 同時実行制御はシリアル化可能性の確保に役立ちます

XNUMX 人が同時に電子キオスクに行き、同じ映画の同じ上映時間の映画チケットを購入すると仮定します。

しかし、その劇場には映画上映用の座席が XNUMX つだけ残っています。 DBMS で同時実行制御がないと、両方の映画鑑賞者がチケットを購入することになる可能性があります。 ただし、同時実行制御方式ではこれは許可されません。 どちらの映画鑑賞者も、映画座席データベースに書き込まれた情報に引き続きアクセスできます。 ただし、同時実行制御では、最初にトランザクション プロセスを完了した購入者にのみチケットが提供されます。

同時実行制御プロトコル

同時実行制御プロトコルが異なれば、許可される同時実行の量とそれが課すオーバーヘッドの量との間で異なる利点が得られます。 フォロwing DBMS の同時実行制御テクニックは次のとおりです。

  • ロックベースのプロトコル
  • XNUMX フェーズ ロック プロトコル
  • タイムスタンプベースのプロトコル
  • 検証ベースのプロトコル

ロックベースのプロトコル

ロックベースのプロトコル DBMS では、トランザクションが適切なロックを取得するまでデータの読み取りまたは書き込みができないメカニズムです。 ロックベースのプロトコルは、DBMS の同時実行の問題を解決するのに役立ちます。neo特定のトランザクションを単一のユーザーにロックまたは分離することで、トランザクションを利用できます。

ロックは、データ項目に関連付けられたデータ変数です。このロックは、データ項目に対して操作を実行できることを示します。 DBMS ヘルプのロック sync同時トランザクションによるデータベース項目へのアクセスを同期化します。

すべてのロック要求は同時実行制御マネージャーに対して行われます。 トランザクションは、ロック要求が許可された場合にのみ続行されます。

バイナリ ロック: データ項目のバイナリ ロックは、ロック状態またはロック解除状態のいずれかになります。

共有/独占: このタイプのロック メカニズムは、用途に基づいて DBMS 内のロックを分離します。 書き込み操作を実行するためにデータ項目に対してロックが取得される場合、それは排他ロックと呼ばれます。

1. 共有ロック (S):

共有ロックは読み取り専用ロックとも呼ばれます。 共有ロックを使用すると、トランザクション間でデータ項目を共有できます。 これは、データ項目のデータを更新する権限が決してないためです。

たとえば、XNUMX つのトランザクションが人の口座残高を読み取るケースを考えてみましょう。 の データベース 共有ロックを設定することで読み取りを許可します。 ただし、別のトランザクションがそのアカウントの残高を更新しようとすると、読み取りプロセスが終了するまで共有ロックによって更新が妨げられます。

2. 排他的ロック (X):

排他的ロックを使用すると、データ項目の書き込みだけでなく読み取りも可能になります。 これは排他的であり、同じデータ項目に対して同時に保持することはできません。 X ロックは、lock-x 命令を使用して要求されます。 トランザクションは、「書き込み」操作の終了後にデータ項目のロックを解除する場合があります。

たとえば、トランザクションで個人の口座残高を更新する必要がある場合などです。 このトランザクションに X ロックを設定すると、このトランザクションを許可できます。 したがって、XNUMX 番目のトランザクションが読み取りまたは書き込みを行う場合、排他ロックによってこの操作が妨げられます。

3. 単純化されたロックプロトコル

このタイプのロックベースのプロトコルを使用すると、トランザクションは操作を開始する前にすべてのオブジェクトのロックを取得できます。 トランザクションは、「書き込み」操作の終了後にデータ項目のロックを解除する場合があります。

4. ロックの事前要求

事前要求ロック プロトコルは、操作を評価し、実行プロセスを開始するために必要なデータ項目のリストを作成するのに役立ちます。 すべてのロックが許可されている状況では、トランザクションが実行されます。 その後、すべての操作が終了すると、すべてのロックが解除されます。

飢餓

スターベーションとは、トランザクションがロックを取得するために無期限に待機する必要がある状況です。

Following 飢餓の理由は次のとおりです。

  • ロックされたアイテムの待機スキームが適切に管理されていない場合
  • リソースリークの場合
  • 同じトランザクションが繰り返し被害者として選択される

Deadlock

Deadlock XNUMX つ以上のプロセスが互いにリソースの解放を待っている、または XNUMX つ以上のプロセスが循環チェーンでリソースを待っている特定の状況を指します。

XNUMX フェーズ ロック プロトコル

XNUMX フェーズ ロック プロトコル 2PL プロトコルとも呼ばれる DBMS の並行性制御の方法であり、トランザクション データにロックを適用することでシリアル化可能性を確保し、他のトランザクションが同じデータに同時にアクセスすることをブロックします。neo普通に。 XNUMX フェーズ ロック プロトコルは、DBMS の同時実行性の問題を解決するのに役立ちます。

このロック プロトコルは、トランザクションの実行フェーズを XNUMX つの異なる部分に分割します。

  • 最初のフェーズでは、トランザクションの実行が開始され、必要なロックに対する許可が必要になります。
  • XNUMX 番目の部分では、トランザクションがすべてのロックを取得します。 トランザクションが最初のロックを解放すると、XNUMX 番目のフェーズが開始されます。
  • この XNUMX 番目のフェーズでは、トランザクションは新しいロックを要求できません。 代わりに、取得したロックのみを解放します。

XNUMX フェーズ ロック プロトコル

XNUMX フェーズ ロック プロトコルを使用すると、各トランザクションは次の XNUMX つのステップでロックまたはロック解除のリクエストを行うことができます。

  • グロwing 相: このフェーズでは、トランザクションはロックを取得することはできますが、ロックを解放することはできません。
  • 縮小段階: このフェーズでは、トランザクションはロックを解放しますが、新しいロックを取得できない場合があります。

2PL プロトコルがシリアル化可能性を提供しているのは事実です。 ただし、それが保証されるわけではありません。adlockは起こらない。

上に示した図では、ローカルおよびグローバルのデプロイメントがadlock 検出器はSEですarchiデのためのNGadlocks を解決し、トランザクションを初期状態に再開することで問題を解決します。

厳密なXNUMX段階ロック方式

Strict-Two 位相ロック システムは 2PL とほぼ同様です。 唯一の違いは、Strict-2PL は使用後にロックを解放しないことです。 コミットポイントまですべてのロックを保持し、プロセスが終了するとすべてのロックを一度に解放します。

集中型2PL

Centralized 2 PL では、単一のサイトがロック管理プロセスを担当します。 DBMS 全体に対してロック マネージャーは XNUMX つだけあります。

プライマリコピー 2PL

プライマリ コピー 2PL メカニズムでは、多くのロック マネージャーがさまざまなサイトに分散されます。 その後、特定のロック マネージャーが一連のデータ項目のロックを管理します。 プライマリ コピーが更新されると、その変更はスレーブに伝播されます。

分散型2PL

このような 2 段階のロック機構では、ロック マネージャーがすべてのサイトに分散されます。 彼らは、そのサイトのデータのロックを管理する責任があります。 データが複製されない場合は、プライマリ コピー 2PL と同等です。 分散 2PL の通信コストはプライマリ コピー XNUMXPL よりもかなり高くなります

タイムスタンプベースのプロトコル

タイムスタンプベースのプロトコル DBMS のアルゴリズムは、システム時間または論理カウンターをタイムスタンプとして使用して、同時トランザクションの実行をシリアル化します。 タイムスタンプ ベースのプロトコルにより、競合するすべての読み取りおよび書き込み操作がタイムスタンプの順序で実行されることが保証されます。

このメソッドでは、常に古いトランザクションが優先されます。 システム時間を使用してトランザクションのタイムスタンプを決定します。 これは、最も一般的に使用される同時実行プロトコルです。

ロックベースのプロトコルは、競合するトランザクションの実行時の順序を管理するのに役立ちます。 タイムスタンプ ベースのプロトコルは、操作が作成されるとすぐに競合を管理します。

例:

Suppose there are there transactions T1, T2, and T3. 
T1 has entered the system at time 0010 
T2 has entered the system at 0020
T3 has entered the system at 0030
Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.

Advantages:

  • スケジュールは 2PL プロトコルと同様にシリアル化可能です
  • トランザクションを待つ必要がないため、トランザクションが中断される可能性が排除されます。adlocks!

短所:

同じトランザクションが再開され、継続的に中止されると、スターベーションが発生する可能性があります。

検証ベースのプロトコル

検証ベースのプロトコル DBMS では、オプティミスティック同時実行制御技術とも呼ばれ、トランザクションの同時実行を回避する方法です。 このプロトコルでは、データ自体ではなくトランザクション データのローカル コピーが更新されるため、トランザクション実行中の干渉が少なくなります。

検証ベースのプロトコルは次のように実行されます。wing XNUMX つのフェーズ:

  1. 読み取りフェーズ
  2. 検証フェーズ
  3. 書き込みフェーズ

読み取りフェーズ

読み取りフェーズでは、トランザクションによってデータベースのデータ値を読み取ることができますが、書き込み操作または更新はローカル データ コピーにのみ適用され、実際のデータベースには適用されません。

検証フェーズ

検証フェーズでは、トランザクション更新をデータベースに適用する際にデータがチェックされ、シリアル化可能性の違反がないことが確認されます。

書き込みフェーズ

書き込みフェーズでは、検証が成功した場合は更新がデータベースに適用され、そうでない場合は更新がデータベースに適用されます。 更新は適用されず、トランザクションはロールバックされます。

優れた同時実行プロトコルの特徴

理想的な同時実行制御 DBMS メカニズムは次のとおりです。wing 目的:

  • サイト障害や通信障害に対する耐性が必要です。
  • これにより、トランザクションを並列実行して最大の同時実行性を実現できます。
  • オーバーヘッドを最小限に抑えるために、その記憶メカニズムと計算方法は控えめにする必要があります。
  • の構造にいくつかの制約を強制する必要があります。 atomトランザクションのアクション。

まとめ

  • 同時実行制御は次の手順です。 DBMS 同時管理用neoお互いに競合することなく操作できます。
  • 更新の喪失、ダーティ読み取り、反復不可能な読み取り、および不正な概要の問題は、同時実行制御の欠如によって直面する問題です。
  • ロックベース、ツーフェーズ、タイムスタンプベース、検証ベースは同時処理プロトコルのタイプです
  • ロックは共有 (S) または排他的 (X) にすることができます。
  • 2PL プロトコルとしても知られる 2 フェーズ ロック プロトコルは、トランザクションがロックの XNUMX つを解放した後にロックを取得する必要があります。 XNUMX段階のフェーズがありますwing そして縮みます。
  • タイムスタンプ ベースのアルゴリズムは、タイムスタンプを使用して同時トランザクションの実行をシリアル化します。 プロトコルでは、 システム時間または論理カウントとして タイムスタンプ。