専有ロックとは?せんゆうロック
専有ロックとは、データを更新するために掛ける、他のどのロックとも両立しないロック。同じ資源に対して1つのトランザクションだけが保持でき、他の専有ロックはもちろん共有ロックの要求も待たされる。排他ロック、書込みロックとも呼ばれる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
同じ行を2つのトランザクションが読んでから書くと、後から書いたほうが先の更新を上書きして消してしまう。これを防ぐ最も単純な方法が「更新中は他を入れない」ことである。ただし資源を丸ごと止めると並行度が落ちるため、表・ページ・行と粒度を選べるようにし、粒度をまたぐ衝突を検出するために意図ロックが用意されている。物理設計でロック方式を選ぶのは、この並行度と管理コストの取引になる。
具体例
在庫の残数を読んでから減算するとき、PostgreSQLやOracle DatabaseではSELECT ... FOR UPDATEで対象行に専有ロックを掛けてから判定する。読んでから書くまでの間に他のトランザクションが割り込み、在庫がマイナスになる事態を防げる。
試験での引っ掛け
共有ロックが掛かっている行への専有ロック要求は待たされる。この待ちの関係を辺として待ちグラフを描き、閉路があればデッドロックと判定する。なお「更新中は読めない」は方式による——MVCCを採る製品では、読取りは専有ロックで待たされず更新前の版を読む。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成29年度 春期 データベーススペシャリスト試験 午前Ⅱ 問18(IPA)
RDBMSのロックに関する記述のうち、適切なものはどれか。ここで、X, Yはトランザクションとする。
正解:XがA表内の特定行aに対して共有ロックを獲得しているときは、YはA表に対して専有ロックを獲得することができない。
要点:行ロックと表ロックは階層関係にあり範囲が重なると両立しない
行に対するロックと表に対するロックは階層関係にあり、表全体の専有ロックは表内の全行を占有することを意味する。したがって他のトランザクションが表内のいずれかの行を共有ロックしている間は、表全体の専有ロックは獲得できない。
出典:平成31年度 春期 データベーススペシャリスト試験 午前Ⅱ 問10(IPA)
t1〜t10の時刻でスケジュールされたトランザクションT1〜T4がある。時刻t10でT1がcommitを発行する直前の、トランザクションの待ちグラフを作成した。…
正解:T2
要点:専有ロック要求が既存の共有ロックの解放を待つ関係を辺にする
共有ロックのままなら共存できるが、専有ロックを掛けようとすると他者の共有ロックの解放を待つことになる。BへのT4の更新はT2の共有ロックを、CへのT2の更新とAへのT3の更新はいずれもT1の共有ロックを待つ。したがって待ちの向きはT4→T2、T2→T1、T3→T1となり、矢印を1本出しつつ1本受けている位置に入るのはT2である。
出典:令和3年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問14(IPA)
RDBMSのロックに関する記述のうち、適切なものはどれか。ここで、X,Yはトランザクションとする。
正解:XがA表内の特定行aに対して共有ロックを獲得しているときは、YはA表に対して専有ロックを獲得することができない。
要点:行の共有ロック中は上位粒度の表専有ロックを取れない
ロックには表単位と行単位のように粒度の違いがあり、粒度をまたいだ整合も取られる。ある行が共有ロックされている状態でその表全体に専有ロックを許すと、ロック中の行まで書き換えられてしまうので許可されない。よってイが適切である。
出典:令和6年度 秋期 データベーススペシャリスト試験 午前Ⅱ 問14(IPA)解説で登場
トランザクションPが資源Xの値を4から5に更新した後にトランザクションQが開始し、Pがコミットする前にQが資源Xを参照しようとした。Qの挙動のa, bに入れる字…
正解:a: Pがコミット完了するまで待機した後、Xの値5を得る / b: Pのコミット完了を待機することなく、Xの値4を得る
要点:2相ロックは待って新値、MVCCは待たず旧版を読む
単版(シングルバージョン)の2相ロッキングでは、更新側が排他ロックを保持したままなので、読取り側はコミットまで待たされ、解放後は更新後の値を読む。一方MVCCは更新時に旧版を残すため、読取り側はロックを待たずにコミット済みの旧版、すなわち更新前の値を読める。READ COMMITTEDでは未コミットの新値を読むことはないので、待たずに読む場合の値は更新前の4になる。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの3 技術要素 > 4. トランザクション処理 > (1) 同時実行制御(排他制御)に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。