専有ロックとは?
専有ロックとは、データを更新するために掛けるロック。他のどのロック(共有・専有とも)とも両立せず、1つのトランザクションだけが保持できる。
データベーススペシャリスト試験の過去問では4回出題されています(2017年度〜2024年度)。
せんゆうロック
専有ロックの意味
データを更新するために掛けるロック。他のどのロック(共有・専有とも)とも両立せず、1つのトランザクションだけが保持できる。
専有ロックの具体例
ある行を更新中は、他のトランザクションはその行を読むことも更新することもできない(隔離性水準による)。
専有ロックは試験でどう引っ掛けられる?
専有ロックと関連する用語
専有ロックが出た過去問
RDBMSのロックに関する記述のうち、適切なものはどれか。ここで、X, Yはトランザクションとする。
正解:XがA表内の特定行aに対して共有ロックを獲得しているときは、YはA表に対して専有ロックを獲得することができない。
要点:行ロックと表ロックは階層関係にあり範囲が重なると両立しない
行に対するロックと表に対するロックは階層関係にあり、表全体の専有ロックは表内の全行を占有することを意味する。したがって他のトランザクションが表内のいずれかの行を共有ロックしている間は、表全体の専有ロックは獲得できない。
出典:平成29年度 春期 データベーススペシャリスト試験 am2 問18(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である。
出典:令和1年度 春期 データベーススペシャリスト試験 am2 問10(IPA)RDBMSのロックに関する記述のうち、適切なものはどれか。ここで、X,Yはトランザクションとする。
正解:XがA表内の特定行aに対して共有ロックを獲得しているときは、YはA表に対して専有ロックを獲得することができない。
要点:行の共有ロック中は上位粒度の表専有ロックを取れない
ロックには表単位と行単位のように粒度の違いがあり、粒度をまたいだ整合も取られる。ある行が共有ロックされている状態でその表全体に専有ロックを許すと、ロック中の行まで書き換えられてしまうので許可されない。よってイが適切である。
出典:令和3年度 秋期 データベーススペシャリスト試験 am2 問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になる。
出典:令和6年度 秋期 データベーススペシャリスト試験 am2 問14(IPA)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。