ロックの粒度とは?ろっくのりゅうど
ロックの粒度とは、排他制御でロックを掛ける範囲の大きさ。データベース全体・表・ページ・行と段階があり、粗くするほど管理するロック情報は少なく制御は軽いが、無関係な行まで巻き込むので同時実行性が落ちる。細かくするほど並行して動けるが、オーバヘッドが増える。
最終更新:2026-10-09
この語が出る過去問を解く →背景
同時実行制御は「整合性を守る」と「待たせない」という相反する要求の折り合いである。全体を止めれば整合性は完璧だが一度に1人しか使えず、何も止めなければ更新が失われる。どこで折り合うかを表すのが粒度で、正解が1つに決まらないからこそ、業務条件を与えて選ばせる問題になる。
具体例
夜間バッチで受注表を全件更新するなら表単位のロックが有利で、数万行ぶんのロック取得を1回で済ませられる。逆に日中、多数の利用者が別々の受注を更新する画面では、行単位にしないと1件の更新中に全員が待たされる。
試験での引っ掛け
「細かくすれば性能が上がる」と単純化しないこと。ロック管理表が膨らんでCPUとメモリを食ううえ、取得するロックが増えるほど取得順序が交錯し、デッドロックの確率はむしろ上がる。専有ロックと共有ロックの別は粒度とは独立した軸なので、混ぜて考えない。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成28年度 春期 基本情報技術者試験 午前 問30(IPA)解説で登場
DBMSにおいて,複数のトランザクション処理プログラムが同一データベースを同時に更新する場合,論理的な矛盾を生じさせないために用いる技法はどれか。
正解:排他制御
要点:同時更新の矛盾はロックによる排他制御で防ぐ
複数のトランザクションが同じデータを同時に更新すると、一方の更新がもう一方に上書きされるなどの矛盾が生じる。これを防ぐため、更新中のデータに施錠して他からの操作を待たせる仕組みが排他制御である。ロックの粒度や共有ロック・専有ロックの使い分けによって、矛盾を防ぎつつ並行性をなるべく損なわないよう調整する。
出典:平成30年度 秋期 基本情報技術者試験 午前 問29(IPA)
ロックの粒度に関する説明のうち,適切なものはどれか。
正解:データを更新するときに,粒度を大きくすると,他のトランザクションの待ちが多くなり,全体のスループットが低下する。
要点:ロック粒度を大きくすると競合が増え同時実行性が下がる
ロックの粒度とは一度にロックする範囲の大きさを指す。粒度を大きく(表単位など)すると、1件しか更新しない場合でも広い範囲が押さえられ、他のトランザクションが待たされる時間が増える。その結果、同時実行性が下がり単位時間当たりの処理件数が落ちる。
出典:平成30年度 春期 基本情報技術者試験 午前 問30(IPA)
RDBMSのロックの粒度に関する次の記述において、a, bの組合せとして適切なものはどれか。並行に処理される二つのトランザクションがそれぞれ一つの表内の複数の行…
正解:a=表, b=行
要点:粗い粒度は競合しやすく、細かい粒度はメモリを多く使う
ロックの粒度が粗い表単位のロックでは、他のトランザクションが同じ表の別の行を触るだけでも待たされるため、競合が起こりやすい。一方、細かい行単位のロックはロック情報を行ごとに保持するので、管理用のメモリ使用量が多くなる。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。