専有ロックとは?せんゆうロック
専有ロックとは、更新のために掛ける、他のどのロックとも同時に成立しないロック。共有ロックとも他の専有ロックとも両立せず、その資源を握れるトランザクションは常に1つに限られる。排他ロック・書込みロック・Xロックも同じものを指し、掛ける粒度は行にも表にも取れる。
最終更新:2026-10-06
この語が出る過去問を解く →背景
更新の途中の中間状態は、他から読まれても他から書かれても整合が壊れる。読み手どうしは互いに影響しないので同居を許せるが、書き手だけは全員を締め出さないと成立しない——この非対称が、ロックを2種類に分けた理由である。どの粒度(行か表か)で掛けるかは、同時実行性と管理コストの取引で、方式設計における判断対象になる。
具体例
PostgreSQLで在庫行をUPDATEすると、その行に行排他ロックが掛かり、同じ行を更新しようとした別セッションはコミットまで待たされる。引当のように読んでから書く処理では、SELECT ... FOR UPDATE で読む時点から取り、判定と更新の間へ割り込まれないようにする。
試験での引っ掛け
両立表では、この側は行も列もすべて×になる(共有側のように一部だけ○にならない)。掛かっている行へさらに要求すると待たされ、この待ちの関係が循環するとデッドロックになる。行に掛かるか表へ昇格するかで待ちの範囲が変わる点も設計上の論点。
関連用語
出た過去問
出典:令和4年度 春期 システムアーキテクト試験 午前Ⅱ 問24(IPA)
t1~t10の時刻でスケジュールされたトランザクションT1~T4がある。時刻t10でT1がcommitを発行する直前の、トランザクションの待ちグラフを作成した。…
正解:T2
要点:待ちグラフは各資源のロック保持者と待機者の関係から決まる
各資源のロック状態を時系列で追うと、AはT1とT4が共有ロック、BはT2とT3が共有ロック、CはT1とT2が共有ロックを保持する。その後、T4のupdate(B)はT2とT3を待ち、T2のupdate(C)はT1を待ち、T3のupdate(A)はT1とT4を待つ。待ちの矢印が出ておらず二つ流入する頂点がT1(図のd)、そこへ向かう矢印を1本だけ出しつつ1本受ける頂点がT2であり、aはT2となる。
出典・参考
高度試験 午前I(高度午前I 相当)のシラバスの3 技術要素 > 4. トランザクション処理 > (1) 同時実行制御(排他制御)に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。