2相ロックとは
2相ロック(Two-Phase Locking)はデータベース管理システムにおいて、複数のトランザクションが同時実行される際の一貫性を保証する代表的な並行制御プロトコルです。このプロトコルでは、各トランザクションがロックを獲得する成長相(Growing Phase)、ロックを解放する縮退相(Shrinking Phase)の2つのフェーズに分かれて動作します。
トランザクションは一度でもロックを解放した後は、新たなロックを獲得できないという制約を設けることで、直列可能性(Serializability)を実現しています。この手法により、複数のトランザクションが並行実行されても、あたかも順番に実行されたかのような結果を得られます。
成長相と縮退相の動作規則
成長相だと、トランザクションは必要なデータに対して、共有ロック(Shared Lock)または排他ロック(Exclusive Lock)を獲得できますが、一切のロック解放は許可されません。共有ロックは読み取り操作に使用され、複数のトランザクションが同時に同じデータを読み取れますが、排他ロックは書き込み操作に使用され、他のトランザクションによる全てのアクセスをブロックします。
| フェーズ | 許可される操作 | 禁止される操作 |
|---|---|---|
| 成長相 | ロックの獲得のみ可能 | ロックの解放は不可 |
| 縮退相 | ロックの解放のみ可能 | ロックの獲得は不可 |
縮退相に入ると、トランザクションは保持しているロックを順次解放していきますが、新たなロックを獲得することは一切できなくなります。この時点で、トランザクションが必要とする全データへのアクセス権を既に確保している必要があるため、事前に必要なリソースを正確に予測することが求められます。
デッドロックの発生と回避戦略
2相ロックプロトコルでは複数のトランザクションが互いに、相手が保持するロックを待ち続けるデッドロック(Deadlock)が発生する可能性があります。例えば、トランザクションAがリソースXをロックしてリソースYを待ち、トランザクションBがリソースYをロックしてリソースXを待つ状況では、両者とも処理を進められません。
| 回避手法 | 動作原理 | 特徴 |
|---|---|---|
| タイムアウト方式 | 一定時間待機後に中断 | 実装が簡単だが最適ではない |
| 待機グラフ検出 | 循環依存を定期的に検査 | 正確だが検出コストがかかる |
| タイムスタンプ順序 | 古いトランザクションを優先 | デッドロックを事前に防止 |
データベース管理システムは、デッドロックを検出した際に犠牲となるトランザクションを選択してロールバックし、保持していたロックを解放させます。ロールバックされたトランザクションは後で再実行されますが、この過程で処理効率が低下するため、適切なロック順序の設計やタイムアウト値の調整が重要です。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
PythonをWebで実行する方法
共通テスト「情報Ⅰ」2年目で変わる、日本の教育と学び方
gitでブランチ(branch)を切り替える方法
git cloneでブランチを指定する方法
64GBのメモリが必要な人・不要な人の特徴
PCを再起動するコマンド一覧
CapsLock以外で大文字になる原因【Windows編】
パソコンで大文字になるのを解除する方法
面白いAIの活用事例を業界別に紹介
Gitでcommit(コミット)を取り消す方法
ITやプログラミングに関するニュース
サイボウズがkintone AIを正式提供、β版から約1年を経てクレジット制を導入
ロゼッタのラクヤクAIがCSRドラフト作成期間を90%以上短縮、従来4週間を約2日に
AI CROSSが不動産業界向け生成AI伴走支援を開始、アスコットの業務AI実装を実践サポート
日本情報クリエイトが「オーナー提案AIロボⅡ」売買査定を刷新、月1万円からW査定が回数無制限に
Wur株式会社がAI新規事業診断サービス「MVP事業診断レポート」をリリース、12の質問で事業構想を約10分で分析
バトンズがM&A専門家向け「AI概要書」β版を提供開始、企業概要書のドラフトを最速3分で自動生成
SCSKが観光DXサービス「Connexia」を開発、首里城公園でNFT活用の周遊促進が始動
Verdent AI発表、エンジニア不要でソフトウェアを構築する「AIエンジニアリングチーム」が登場
ゼネラルBREXAテクノロジーが外食・小売向けAIサービス「aimana」を開発、店長の意思決定をデータで支援
田中組がKencopa工程AIエージェント製品版を先行利用開始、建設現場の工程管理属人化を解消へ
