令和4年度 データベーススペシャリスト 午前Ⅱ 問5 2相ロックプロトコル

情報処理技術者試験

本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。

令和4年度 データベーススペシャリスト 午前Ⅱ 問5 2相ロックプロトコル

本問はデータベースの並行制御における2相ロックの性質を問う。解法の核は、デッドロックの可能性と直列可能性の保証を区別することにある。

【問題】

2相ロックプロトコルに関する記述のうち、適切なものはどれか。

ア アンロック(ロック解除)のフェーズでも、必要に応じて新規のロックを獲得できる。 イ 直列可能(シリアライザブル)なスケジュールになることが保証される。 ウ デッドロックが発生しないことが保証される。 エ 任意のトランザクション間で、ロックの順序を固定化するものである。

【解説】

2相ロックプロトコル(2-Phase Locking: 2PL)は、データベースの並行制御において、トランザクションの直列可能性を保証するためのプロトコルです。

このプロトコルでは、各トランザクションにおけるロックおよびアンロックの操作を、以下の2つのフェーズ(相)に明確に分離します。

  1. 成長相(Growing Phase): 必要なロック(共有ロック・専有ロック)を順次獲得していくフェーズ。このフェーズでは、ロックの獲得のみが行われ、一切のアンロック(解除)を行うことはできません。

  2. 収縮相(Shrinking Phase): 獲得したロックを順次解除していくフェーズ。一度でもロックを解除(アンロック)すると、そのトランザクションは収縮相に移行し、以後、新たなロックを獲得することは一切禁止されます。

stateDiagram-v2
    [*] --> Growing_Phase : Transaction_Start
    Growing_Phase --> Growing_Phase : Lock_Acquisition
    Growing_Phase --> Shrinking_Phase : First_Unlock
    Shrinking_Phase --> Shrinking_Phase : Lock_Release
    Shrinking_Phase --> [*] : Transaction_End

理論的帰結

2相ロックプロトコルに従うスケジュールは、数学的に直列可能(シリアライザブル)であることが証明されています。直列可能とは、並行して実行した結果が、ある順序で1つずつ順次に(直列に)実行した場合の結果と等しくなる性質を指し、データの整合性を保つために不可欠な要素です。

しかし、2PLはデッドロックの発生を防止することはできません。例えば、トランザクションAが資源Xをロックし、トランザクションBが資源Yをロックした状態で、互いに相手の資源をロックしようとすると、どちらも成長相を抜け出せずデッドロックに陥ります。

【選択肢の吟味】

選択肢 判定 解説
× 収縮相(ロック解除を行うフェーズ)に移行した後は、いかなる場合も新規のロックを獲得することはできません。
2相ロックプロトコルを遵守することで、スケジュールが必ず直列可能(シリアライザブル)になることが保証されます。
× 2PLはデッドロックを防止しません。デッドロックの防止には、静的ロックや資源の順序付けなど別の対策が必要です。
× ロックの獲得順序を固定化するルールは含まれていません。順序の固定化は、デッドロックを予防するための別の手法です。

【ポイント】

  • 直列可能性の保証:2相ロックプロトコル(2PL)の最大の目的であり、遵守すれば必ず直列可能なスケジュールとなる。

  • デッドロックは未解決:2PLを採用してもデッドロックは発生するため、別途「待機グラフ」などを用いた検出と解消が必要。

  • 2つのフェーズ(相):ロック獲得のみの「成長相」と、ロック解除のみの「収縮相」に分かれ、逆戻りはできない。

文書情報

記事タイトル
令和4年度 データベーススペシャリスト 午前Ⅱ 問5 2相ロックプロトコル
作成日
更新日
Source URL
https://papanda925.com/?p=7406

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

タイトルとURLをコピーしました