専有ロックとは?せんゆうロック
専有ロックとは、データを書き換えるトランザクションが掛けるロック。同じ資源に対して他のどのロックとも両立せず、共有ロック(データを読むだけの処理が掛け、読む処理どうしなら同時に掛けられるロック)が既に掛かっている行には掛けられないため、保持できるのは常に1つのトランザクションだけになる。排他ロックとも呼ばれ、更新の途中の値を他から読ませないためにある。
最終更新:2026-10-09
この語が出る過去問を解く →背景
同じ在庫の数量を2つの処理が同時に読み、それぞれ1を引いて書き戻すと、2回引いたはずが1回分しか減らない。読んでから書くまでの間に他が割り込めることが原因なので、書く側は読んだ時点から書き終わるまで、その資源を独り占めする必要がある。専有ロックはこの独り占めを宣言する仕組みで、複数の処理の待ち合いが循環するとデッドロックになる。
具体例
MySQLで SELECT … FOR UPDATE(更新するつもりで行を読み出せ、という意味)と書くと、読み出した行に専有ロックが掛かる。在庫数を確認して引き算し、書き戻すまでの間、他のトランザクションは同じ行を更新できず、解放を待つことになる。
試験での引っ掛け
共有ロックが掛かっている行にも掛けられない点を落としやすい。掛ける単位(ロック粒度)を行ではなく表にすると、待たされる範囲が広がって同時実行性は落ちるが、管理する情報の量は減るという交換関係も問われる。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成28年度 春期 基本情報技術者試験 午前 問30(IPA)解説で登場
DBMSにおいて,複数のトランザクション処理プログラムが同一データベースを同時に更新する場合,論理的な矛盾を生じさせないために用いる技法はどれか。
正解:排他制御
要点:同時更新の矛盾はロックによる排他制御で防ぐ
複数のトランザクションが同じデータを同時に更新すると、一方の更新がもう一方に上書きされるなどの矛盾が生じる。これを防ぐため、更新中のデータに施錠して他からの操作を待たせる仕組みが排他制御である。ロックの粒度や共有ロック・専有ロックの使い分けによって、矛盾を防ぎつつ並行性をなるべく損なわないよう調整する。
出典:令和元年度 秋期 基本情報技術者試験 午前 問29(IPA)
2相ロッキングプロトコルに従ってロックを獲得するトランザクションA、Bを図のように同時実行した場合に、デッドロックが発生しないデータ処理順序はどれか。ここで、r…
正解:①update X ②read W ③update Y ④update Z
要点:デッドロック回避の基本は、資源のロック順序を全体でそろえること
2相ロッキングでは獲得したロックをトランザクション終了まで解放しないため、2つのトランザクションが同じ2件のデータを互いに逆の順序でロックしようとするとデッドロックになる。トランザクションAはW、X、Y、Zの順に処理するので、Bも同じ相対順序でロックを取れば循環待ちは起きない。Wは共有ロックなので双方が同時に保持でき、待ちの原因にはならない点も判断材料になる。
出典・参考
公式シラバスの3 技術要素 > 4. トランザクション処理 > (1) 同時実行制御(排他制御)に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。