読み方 : きょうゆうロック
共有ロック【shared lock】
概要

並行して複数のプログラムが動作する環境では、同一のデータに複数の主体が同時に読み書きすると、データの破損や処理の矛盾が生じる恐れがある。これを防ぐため、先にアクセスした主体が処理の完了まで他の主体によるアクセスを一時的に制限する仕組みを「ロック」(lock)という。
ロックには「共有ロック」と「排他ロック」(占有ロック)がある。共有ロックは他の主体による書き換えや削除は禁じるが、参照は許可する方式である。ロックをかけた主体自身も書き込みは行えず、対象を安全に参照するために用いられる。一方、排他ロックは参照も含めた一切のアクセスを他の主体に禁じ、対象を完全に独占する。データの書き換えや削除を行う際には、事前に排他ロックを取得する必要がある。
共有ロック同士は互いに競合しないため、複数の主体が同じ対象に同時に共有ロックをかけて並行して参照することができる。一方、いずれかの主体が共有ロックを保持している間は、他の主体は排他ロックを取得できず、書き込み操作は待機状態となる。排他ロックを取得するには、対象に共有ロック・排他ロックがいずれも存在しない状態でなければならない。
ロックの適用単位(粒度)はシステムによって異なり、行やページ、テーブル、データベース全体など様々な単位で設定される。粒度が細かいほど並行性は高まるが、ロック管理のコストも増大する。共有ロックはトランザクションの分離性とも深く関わり、読み取りの一貫性を保ちながら複数処理の並行実行を可能にする。
(2026.6.22更新)