意図ロックとは?いとロック
意図ロックとは、表ロックの可否を、配下の行を1本ずつ調べずに判定できるようにするための予告用のロック。行に専有ロックを掛けるトランザクションは、先にその表へIX(意図専有)を立てておく。あとから表全体のロックを要求する側は、表に立った印だけを見て衝突の有無を判断できる。粒度の違うロックを混在させる多粒度ロックの土台になる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
ロックの粒度を行まで細かくすると同時実行性は上がるが、表全体を読む処理が来たときに衝突の有無を確かめるには行を全部走査しなければならない。粒度を表にすれば判定は速いが並行度が落ちる。上位に印だけ立てておけば両方を取れる——この折り合いを付けるために置かれた仕組みである。
具体例
行に専有ロックを掛ける前に、その行が属する表へIX(意図専有)を掛けておく。あとから表全体にS(共有)ロックを要求するトランザクションは、表のIXを見た時点で待たされると判断でき、表に何万行あっても走査は不要になる。
試験での引っ掛け
名前に引きずられて排他的だと判断するのが定番の誤り——意図ロックは下位へ掛けにいくという予告にすぎないため、同じ表に立ったIXどうしは両立し、別々の行を更新する2つのトランザクションは表レベルで衝突しない。両立しないのは、表のIXと表全体へのSのように実際に表全体を押さえにいく組合せである。
関連用語
出た過去問
出典:令和元年度 秋期 応用情報技術者試験 午前 問28(IPA)解説で登場
RDBMSのロックに関する記述のうち、適切なものはどれか。ここで、X, Yはトランザクションとする。
正解:XがA表内の特定行aに対して共有ロックを獲得しているときは、YはA表に対して専有ロックを獲得することができない。
要点:ロックは粒度が違っても、範囲が重なれば共有と専有は競合する
表の一部の行に共有ロックが掛かっている状態で、別のトランザクションが表全体に専有ロックを掛けられてしまうと、その行を書き換えられてしまい矛盾します。そのため、行ロックと表ロックの整合を取る意図ロックの仕組みにより、表全体への専有ロックは獲得できません。粒度の違うロックどうしも競合しうる点が要点です。
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。