共有ロックとは?きょうゆうロック
共有ロックとは、データを読むトランザクションが掛けるロック。同じ資源に何個でも同時に掛けられるので、参照だけの処理どうしは互いに待たされない。一方で専有ロック(データを書き換えるときに掛け、ほかのロックを一切許さないロック)とは両立しないため、読んでいる間はその資源を誰にも書き換えさせないという保証になる。
最終更新:2026-10-09
この語が出る過去問を解く →背景
読むだけの処理まで1つずつ順番に通していては、参照が大半を占める業務システムはたちまち詰まる。かといって更新の途中の値を平気で読ませると、集計の最中に数字が変わり、合計の合わない結果が出る。共有ロックは「読む者どうしは邪魔にならない、締め出すべきは書く者だけ」という切り分けによって、速さと正しさの両方を成り立たせている。
具体例
月次の集計が売上表に共有ロックを掛けている間、別の端末から同じ表を見に行く照会は待たされずに通る。しかしその表へ行を追加しようとする登録処理だけは、集計が終わって解放されるまで待たされる。
試験での引っ掛け
両立の向きを取り違えやすい。共有どうしだけが同時に成立し、共有と専有、専有どうしは成立しない。さらに、読むだけなら安全というわけでもない。同じ行に共有ロックを掛けた2つのトランザクションが揃って専有ロックへ上げようとすると、互いの解放を待って動けなくなる(昇格によるデッドロック)。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成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) 同時実行制御(排他制御)に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。