複数粒度ロック(Multiple Granularity LockingMGL)は、データベース管理システム(DBMS)やリレーショナルデータベースで使われるロック手法である。John Rayner Locking Methodとも呼ばれる。

MGLでは、ロックは他のオブジェクトを含んだオブジェクトに対して設定される。MGLは「包含関係」の階層構造の性質を利用する。例えば、データベースにはファイルがあり、ファイルにはページがあり、ページにはレコードがある。これをオブジェクトの木構造と捉え、各ノードに子ノードが包含されているとする。ロックは対応するノードとその配下のノード群をまとめてロックする。

複数粒度ロックでは、直列化可能性(Serializability)を保証するため、厳密でない (Non-strict) ツーフェーズロックを使用することが多い。MGLでは上位ノードでの粒度のロックが必要になったときにロックエスカレーションと呼ばれる機能を使用する。そうでなくとも、DBMSではロックを確保する際にメモリを使用する場合があり、多数のロックを獲得するとそれだけメモリを消費することになる。そのようなときにシステムが自動的にロックエスカレーションによって上位の粒度のロックに切り替えてメモリ消費を抑える場合がある。

ロックモード

厳密な (Strict) ツーフェーズロックなどの他のロック手法にもある共有 (Shared) と排他 (eXclusive) だけでなく、MGLでは Intention SharedIntention eXclusive というロックも使用する。ISロックは Xロックと衝突し、IXロックは Sロック/Xロックと衝突する。

あるノードをS(またはX)でロックするためには、MGLはその上位ノード全体をIS(またはIX)でロックしてから、対象ノードをS(またはX)でロックする。従って、他のトランザクションはその上位ノードをX(またはSとX)でロックすることができない。

MGLのロックモードの比較表を以下に示す。左端のモードでロックされているノードに上端のモードでロックしようとした場合にロックできるかどうかを示している。


ロック粒度とは?ゆるーくわかりやすく解説 マスジョイ

マルチロック│産業繊維資材の製造・販売|大嘉産業株式会社

粒子分析〜ナノからミリまで、製品開発に欠かせない分析を精度高く実施する〜|製品解説|科学/試験/計測機器の情報コンテンツ|オザワ科学

ロックの粒度について猫にも分かるように説明してみた

1章 並列OS概論. ppt download