Skip to the content.

最終更新日:2026年7月27日

まず結論

共有ロックは主に読み取り用、専有ロックは主に更新用のロックです。

基本情報技術者試験では、次のように切り分けます。

共有ロック同士
→ 共存できる

共有ロックと専有ロック
→ 共存できない

専有ロック同士
→ 共存できない

つまり、

共有ロック同士だけは両立し、専有ロックが関わる組合せは両立しない

と覚えると判断しやすくなります。


直感的な説明

同じ資料を複数人で読む場面を考えます。

読む人A
読む人B

読むだけなら、同じ資料を同時に見ても問題ありません。

これが共有ロック同士の状態です。

一方、誰かが資料を書き換えている途中に別の人が読んだり、同時に別の内容へ書き換えたりすると、内容が食い違う可能性があります。

読む × 読む
→ 同時にできる

読む × 書く
→ 同時にできない

書く × 読む
→ 同時にできない

書く × 書く
→ 同時にできない

共有ロックを「読む」、専有ロックを「書く」と置き換えるとイメージしやすいです。


定義・仕組み

共有ロック

共有ロックは、主にデータを読み取るときに使うロックです。

複数のトランザクションが同じデータを読むだけなら、同時に利用できます。

T1:共有ロックを取得
T2:共有ロックを取得
→ 可能

ただし、共有ロック中のデータを別のトランザクションが更新することはできません。

専有ロック

専有ロックは、主にデータを更新するときに使うロックです。

対象データを更新している間は、ほかのトランザクションによる読み取りや更新を防ぎます。

T1:専有ロックを取得
T2:共有ロックを取得
→ 不可

T2:専有ロックを取得
→ 不可

ロックの両立性

すでに掛かっているロック 新たに共有ロック 新たに専有ロック
共有ロック ×
専有ロック × ×

試験では、この表をそのまま覚えるよりも、次の1行を残すと便利です。

共有+共有だけ○
それ以外は×

ロック待ち

必要なロックを取得できない場合、トランザクションは既存のロックが解除されるまで待ちます。

T1が専有ロック中
↓
T2はロックを取得できない
↓
T1の終了まで待つ

この状態をロック待ちと呼びます。

このテーマは基本情報技術者試験のデータベース分野に含まれます。公式の出題範囲は、IPA:基本情報技術者試験から確認できます。


科目Aでどう出る?

科目Aでは、共有ロックと専有ロックの両立性を問う選択問題がよく出ます。

選択肢を切る判断表

選択肢の表現 判断
共有ロック中に、別の共有ロックを取得できる 正しい
共有ロック中に、専有ロックを取得できる 誤り
専有ロック中に、共有ロックを取得できる 誤り
専有ロック中に、別の専有ロックを取得できる 誤り

試験中は、次の順番で判断します。

1. 既に掛かっているロックを確認
2. 新たに取得したいロックを確認
3. 共有+共有かどうかを見る
4. 共有+共有なら可、それ以外は不可

読み取りと更新に置き換える

用語だけで迷ったら、次のように置き換えます。

共有ロック
→ 読み取り

専有ロック
→ 更新

すると、

読む × 読む
→ 可

書くが含まれる
→ 不可

と判断できます。


どんな場面で使う?

同時実行時のデータ保護

複数の利用者が同じデータを同時に扱うシステムでは、ロックが必要です。

例えば、在庫数が10個の商品を2人が同時に購入するとします。

T1:2個購入
T2:3個購入

適切なロックがなければ、片方の更新が上書きされ、在庫数が正しく反映されないことがあります。

更新時に専有ロックを使うことで、同時更新による矛盾を防ぎます。

検索と更新の制御

検索だけを行う処理では共有ロック、データを書き換える処理では専有ロックを使います。

SELECT中心の処理
→ 共有ロック

UPDATE・DELETEなどの更新処理
→ 専有ロック

ただし、実際のDBMSでは分離レベルや実装方式によって挙動が異なるため、試験では問題文の前提を優先します。


よくある誤解・混同

共有ロックなら更新もできる

できません。

共有ロックは読み取り用であり、更新には専有ロックが必要です。

専有ロック中でも、読み取りだけならよい

基本的にはできません。

専有ロック中は、そのトランザクションが対象資源を独占しています。

共有ロックは1つしか取得できない

違います。

複数のトランザクションが同じ資源に共有ロックを取得できます。

ロック待ちとデッドロックは同じ

違います。

ロック待ち
→ ほかのトランザクションの終了を待つ

デッドロック
→ 複数のトランザクションが互いのロック解除を待ち続ける

例えば、T1が資源A、T2が資源Bをロックしたまま、互いに相手の資源を待つとデッドロックになります。

二相ロックは共有ロックと専有ロックの2種類を使うこと

違います。

二相ロックは、

ロックを獲得する段階
↓
ロックを解放する段階

の2段階に分ける方式です。

共有ロックと専有ロックの2種類を指す言葉ではありません。


まとめ(試験直前用)

  • 共有ロックは主に読み取り、専有ロックは主に更新に使う
  • 共有ロック同士だけは同時に取得できる
  • 専有ロックが関わる組合せは両立しない
  • 迷ったら「読む×読むだけ可」と考える
  • ロック待ちとデッドロックを混同しない

© 2024-2026 stemtazoo. All rights reserved.