ロック粒度 【lock granularity】
概要
ロック粒度(lock granularity)とは、並行処理で複数のプログラムが同じ資源に同時にアクセスしないよう一時的にアクセスを抑止する「ロック」機構で、ロックの対象とする資源の範囲や単位のこと。例えば、リレーショナルデータベース(RDB)の場合、あるプログラムがあるデータベースのあるテーブルのあるレコードにアクセスする際に行うロックの対象範囲として、「当該データベース全体」「当該テーブル」「当該テーブルの当該レコードを含む記憶装置上のブロック」「当該レコード」などが考えられる。
データベース全体のように広い範囲をいっぺんにロックすることを「ロック粒度が粗い」あるいは「ロック粒度が大きい」という。逆に、レコード単位のように小さな範囲だけロックすることを「ロック粒度が細かい」あるいは「ロック粒度が小さい」という。
ロック粒度が粗い場合、ロックに伴う処理の負担は小さいが、広範囲をロックするため競合状態が起きやすく、ロック解放の待ち時間が長くなり、並列に実行できるトランザクションの数は少なくなる。ロック粒度が細かいと、これとは逆にロック処理の負担は大きくなるが、競合が起きにくく、待ち時間は短くなり、トランザクションの並列度を高めやすくなる。
データベース管理システム(RDBMS)は主にテーブル単位のロック(テーブルロック)と行単位のロック(行ロック/行レベルロック)に対応しており、SQL文の記述などでどちらを適用するか選択できるようになっていることが多い。
(2021.10.21更新)