読み方 : はいたロック
排他ロック【exclusive lock】占有ロック/専有ロック
概要
排他ロックとは、データベースシステムなどで記憶領域への同時アクセスを制限するロック機構の一つで、処理の実行中に他の主体によるアクセスを完全に遮断し、対象を独占的に占有するもの。

複数のプログラムが並行して実行される環境では、同じデータを同時に読み書きすると内容が破損したり処理に矛盾が生じたりする。これを防ぐため、先にアクセスした処理が完了するまで他の処理のアクセスを一時的に禁じる仕組みを「ロック」(lock)という。排他ロックロックはその方式の一つで、対象データを安全に更新したい際に用いられる。
排他ロックと対になる概念が「共有ロック」(shared lock)である。共有ロックは他の処理による参照(読み込み)を許可しつつ、書き込みや排他ロックの取得を禁じる。排他ロックが取得されている間は共有ロックも取得できず、共有ロックが存在する間は排他ロックを取得できない。ある時点で排他ロックを取得できる処理は常に一つだけである。
データベース管理システム(DBMS)では、トランザクション処理の一環として排他ロックが自動的に管理されることが多い。UPDATE文やDELETE文などの変更操作を実行すると、DBMSが対象の行や表に暗黙的にロックをかける。ロックの粒度は行単位やページ単位、テーブル単位など実装によって異なり、粒度が細かいほど並行実行性は高まるが、オーバーヘッドも大きくなる。
ロックの保持時間が長くなると他の処理の待ち時間が増え、スループットが低下する。また、複数の処理が互いに相手のロック解放を待ち続ける「デッドロック」(deadlock)が発生する場合もある。例えば、一方の処理がデータAをロックした後にデータBを要求し、もう一方が逆の順序でロックを取得しようとすると、双方が停止状態に陥る。多くのDBMSではデッドロックを検出すると、いずれかの処理を強制的に中断して状況を解消する仕組みが組み込まれている。
(2026.5.28更新)