読み方 : ロックりゅうど

ロック粒度【lock granularity】

概要

ロック粒度とは、並行処理で複数のプログラムが同じ資源に同時にアクセスしないよう一時的にアクセスを抑止する「ロック」機構で、ロックの対象とする資源の範囲や単位のこと。
ロック粒度のイメージ画像

例えば、リレーショナルデータベース(RDB)の場合、あるプログラムがあるデータベースのあるテーブルのあるレコードにアクセスする際に行うロックの対象範囲として、「当該データベース全体」「当該テーブル」「当該テーブルの当該レコードを含む記憶装置上のブロック」「当該レコード」などが考えられる。

データベース全体のように広い範囲をいっぺんにロックすることを「ロック粒度が粗い」あるいは「ロック粒度が大きい」という。逆に、レコード単位のように小さな範囲だけロックすることを「ロック粒度が細かい」あるいは「ロック粒度が小さい」という。

ロック粒度が粗い場合、ロックに伴う処理の負担は小さいが、広範囲をロックするため競合状態が起きやすく、ロック解放の待ち時間が長くなり、並列に実行できるトランザクションの数は少なくなる。ロック粒度が細かいと、これとは逆にロック処理の負担は大きくなるが、競合が起きにくく、待ち時間は短くなり、トランザクションの並列度を高めやすくなる。

データベース管理システムRDBMS)は主にテーブル単位のロック(テーブルロック)と行単位のロック(行ロック/行レベルロック)に対応しており、SQL文の記述などでどちらを適用するか選択できるようになっていることが多い。

(2021.10.21更新)

資格試験などの「ロック粒度」の出題履歴

▼ 基本情報技術者試験
令3修7 問28】 ロックの粒度に関する説明のうち,適切なものはどれか。
令2修1 問27】 ロックの粒度に関する説明のうち,適切なものはどれか。
平30秋 問29】 ロックの粒度に関する説明のうち,適切なものはどれか。
平30春 問30】 RDBMSのロックの粒度に関する次の記述において,a,b の組合せとして適切なものはどれか。 並行に処理される二つのトランザクションがそれぞれ一つの表内の複数の行を更新する。