意図ロックとは?いとロック
意図ロックとは、行など下位の粒度にロックを掛ける前に、その上位の粒度(表)へ「下位でロックする予定がある」と予告しておくロック。意図共有ロック(IS)と意図専有ロック(IX)があり、表全体をロックしたいトランザクションは意図ロックの有無を見るだけで、全行を調べずに両立性を判定できる。支援士では担当外の分野だが、多粒度ロックの両立性表を読む問題として午前IIのデータベース分野に出る。
最終更新:2026-10-06
情報処理安全確保支援士を最短で暗記・合格する →背景
行ロックだけの世界では、表全体をロックしたい処理が来るたびに、全行に他のロックが無いかを調べなければならず、行数に比例して遅くなる。上位の粒度に予告を1つ置いておけば、そこを見るだけで判定が済む。この多粒度ロックの仕組みは現在の主要なデータベース製品に組み込まれており、セキュリティを主務としない読者でも、表ロックと行ロックの両立表を読めることが午前IIでは求められる。
具体例
MySQL(InnoDB)やSQL Serverでは、SELECT … FOR UPDATEで行に専有ロックを掛けると、表には意図専有ロック(IX)が自動で付く。表全体を必要とするALTER TABLEのような処理は、IXが残っている間は待たされる。別々の行を更新する2つの処理は表レベルではIXどうしなので衝突しない。
試験での引っ掛け
IXは「これから下位で専有する」という予告であって実際のロックではないため、表へのIXどうしは両立する。別々の行を更新する2つのトランザクションは、表レベルでは衝突しない。一方で表全体へのS(共有ロック)と表へのIXは両立せず、表を読み切りたい処理は行の更新が終わるまで待つ。「専有と名が付くから排他」と早合点して、IX同士を不両立と答えるのが典型的な誤り。
関連用語
出典・参考
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。