共有ロックとは?
共有ロックとは、データを読むために掛けるロック。同じデータに複数のトランザクションが同時に掛けられるが、専有ロックとは両立しない。
データベーススペシャリスト試験の過去問では3回出題されています(2017年度〜2021年度)。
きょうゆうロック
共有ロックの意味
データを読むために掛けるロック。同じデータに複数のトランザクションが同時に掛けられるが、専有ロックとは両立しない。
共有ロックの具体例
参照だけの処理どうしは互いに待たされない。
共有ロックは試験でどう引っ掛けられる?
両立表の向きを取り違えないこと。共有×共有は両立、共有×専有と専有×専有は両立しない。また「読むだけだから安全」ではなく、2つのトランザクションが同じ行に共有ロックを掛けたまま双方が専有ロックへ昇格しようとすると互いに待ち合ってデッドロックになる(昇格デッドロック)。
共有ロックと関連する用語
共有ロックが出た過去問
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)
最終更新:2026-08-25/解説は資格暗記が独自に作成しています。 過去問の出典は各問題に記載のとおりです。