共有ロックとは?きょうゆうロック
共有ロックとは、データを読むために掛けるロックで、同じ資源に対して複数のトランザクションが同時に掛けられる一方、更新のための専有ロックとは両立しない。読み手どうしを待たせず、読んでいる最中の書換えだけを止めることで、参照の多い業務でも並行度を落とさずに整合性を保てるようにする仕組みである。
最終更新:2026-10-06
この語が出る過去問を解く →背景
すべてのアクセスを排他にすれば整合性は守れるが、参照だけの処理まで1件ずつ順番待ちになり、同時利用者が増えるほど待ち行列が伸びる。読み手どうしは互いのデータを壊さないのだから待たせる理由がない、という観察から、ロックを読み用と書き用の2種類に分ける設計が生まれた。応用情報では両立表を読ませる問題として出る。
具体例
多数の店舗が在庫参照の画面を同時に開いていても、共有ロックどうしは両立するので待ちは生じない。そこへ棚卸しの更新処理が専有ロックを要求すると、参照側のロックがすべて外れるまで待たされる。PostgreSQLやOracleは、MVCCによってこの読み書きの競合自体を避ける実装をとっている。
試験での引っ掛け
両立表の向きを取り違えないこと。共有×共有は両立し、共有×専有と専有×専有は両立しない。「読むだけだから安全」でもなく、2つのトランザクションが同じ行に共有ロックを掛けたまま双方が専有ロックへ昇格しようとすると、互いに待ち合って昇格デッドロックになる。
関連用語
出た過去問
出典:令和元年度 秋期 応用情報技術者試験 午前 問28(IPA)
RDBMSのロックに関する記述のうち、適切なものはどれか。ここで、X, Yはトランザクションとする。
正解:XがA表内の特定行aに対して共有ロックを獲得しているときは、YはA表に対して専有ロックを獲得することができない。
要点:ロックは粒度が違っても、範囲が重なれば共有と専有は競合する
表の一部の行に共有ロックが掛かっている状態で、別のトランザクションが表全体に専有ロックを掛けられてしまうと、その行を書き換えられてしまい矛盾します。そのため、行ロックと表ロックの整合を取る意図ロックの仕組みにより、表全体への専有ロックは獲得できません。粒度の違うロックどうしも競合しうる点が要点です。
出典・参考
公式シラバスの3 技術要素 > 4. トランザクション処理 > (1) 同時実行制御(排他制御)に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。