専有ロックとは?せんゆうロック
専有ロックとは、データを更新するために掛けるロック。同じ資源に対する他のロック(共有・専有とも)と両立せず、1つのトランザクションだけが保持できる。読取り同士なら同時に掛けられる共有ロックと違い、後続の読取りも更新も待たせる点が最大の違いである。
最終更新:2026-10-06
この語が出る過去問を解く →背景
複数のトランザクションが同じ行を同時に書き換えれば、片方の更新が上書きされて消える。かといって常に1件ずつ直列に流せば、読むだけの処理まで待たされて性能が落ちる。共有と専有の2種類を用意するのは、「読む者同士は互いに邪魔しない」という性質を使い、整合性と同時実行性のどちらも諦めないための調停である。掛け外しの順序を定めて直列化可能性を保証するのが2相ロッキングプロトコル。
具体例
PostgreSQLでUPDATE文を発行すると対象行に行排他ロックが取られ、同じ行を更新する別セッションはコミットまで待つ。在庫数を読んでから引き当てるまでの横取りを防ぎたい場面では、読取りの時点でSELECT ... FOR UPDATEにより同じロックを取っておく。
試験での引っ掛け
共有ロックが掛かった行に専有ロックは掛からない——「共有だから専有も併存できる」は誤り。ロック粒度を細かくすると待ちは減るが管理するロックの数と処理量は増える、という向きも逆にして出される。待ちが循環した状態がデッドロックで、待ちグラフの閉路として検出する。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成28年度 春期 応用情報技術者試験 午前 問28(IPA)
トランザクションA(処理A1→処理A2の順に実行する)とトランザクションB(処理B1→処理B2の順に実行する)が,データベースの資源SとTに対し,次のように処理…
正解:A1=S, B1=T, A2=T, B2=S
要点:互いに相手の保持資源を要求し合うとデッドロックになる
デッドロックは、互いが相手の保持する資源を待ち合うときに発生する。AがSを、BがTを先に確保し、次にAがT、BがSを要求する組合せでは、両者が相手の解放を待ち続けて処理が進まなくなる。
出典:平成30年度 秋期 応用情報技術者試験 午前 問30(IPA)解説で登場
データベースシステムにおいて,二つのプログラムが同一データへのアクセス要求を行うとき,後続プログラムのアクセス要求に対する並行実行の可否の組合せのうち,適切なも…
正解:エ:(後続共用,先行共用)=○,(後続共用,先行排他)=×,(後続排他,先行共用)=×,(後続排他,先行排他)=×
要点:共用ロック同士だけが両立し、排他ロックは何とも両立しない。
共用ロック(読取り用)は複数のプログラムが同時に保持できるので、共用ロック同士の場合だけ並行実行できる。一方、排他ロック(更新用)は他のいかなるロックとも共存できないため、先行が排他の場合も、後続が排他を要求する場合も待たされる。したがって共用×共用のみ○で、残り三つは×となる組合せが正しい。
出典:令和元年度 秋期 応用情報技術者試験 午前 問28(IPA)
RDBMSのロックに関する記述のうち、適切なものはどれか。ここで、X, Yはトランザクションとする。
正解:XがA表内の特定行aに対して共有ロックを獲得しているときは、YはA表に対して専有ロックを獲得することができない。
要点:ロックは粒度が違っても、範囲が重なれば共有と専有は競合する
表の一部の行に共有ロックが掛かっている状態で、別のトランザクションが表全体に専有ロックを掛けられてしまうと、その行を書き換えられてしまい矛盾します。そのため、行ロックと表ロックの整合を取る意図ロックの仕組みにより、表全体への専有ロックは獲得できません。粒度の違うロックどうしも競合しうる点が要点です。
出典・参考
公式シラバスの3 技術要素 > 4. トランザクション処理 > (1) 同時実行制御(排他制御)に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。