排他制御とは?はいたせいぎょ
排他制御とは、複数の利用者が同じデータを同時に更新しようとしたときに、データの整合性が崩れないよう一時的にアクセスを制限(ロック)する仕組み。同時実行制御ともいう。先に処理を始めた側がロックを取得し、あとから来た処理は解放されるまで待つ。読み取りだけを許す共有ロックと、読み書きとも禁じる専有ロックがある。
最終更新:2026-10-10
この語が出る過去問を解く →背景
1人ずつ順番に書き込む紙の台帳では、二重に書かれる心配は無かった。データベースを大勢が同時に使うようになると、2人が同じ在庫数を読んでから別々に引き算し、あとから書いたほうの結果だけが残る、といった取りこぼしが起きる。どちらの処理も単体では正しいのに結果が壊れるため、処理の中身ではなく「同時に触らせない」という側で解決する必要があった。トランザクションの考え方とセットで問われる。
具体例
座席予約システムでは、同じ座席に2人が同時に申し込んでも、先に処理へ入った側がその座席をロックする。もう一方には別の座席か満席の表示が返り、二重予約が起きない。銀行口座の残高更新も同じ考え方で守られている。
試験での引っ掛け
「ロック=完全に締め出す」と決めつけると誤る。共有ロックどうしは同時にかけられ、参照は並行してできる。またロックを厳しくかけるほど安全になる代わりに待ちが増え、互いに相手のロック解放を待ち続けるデッドロックが起こりうる、という副作用まで対で問われる。
関連用語
出た過去問
問題文で直接問われたものと、解説の中で触れられたものが含まれます。
出典:平成21年度 春期 ITパスポート試験 問82(IPA)解説で登場
データDを更新する二つの処理A、Bが、①→③→②→④のタイミングで実行された場合、Dの値は幾らになるか。ここで、Dの初期値は2とする。
正解:7
要点:排他制御がないと後の書込みが先の更新を消してしまう
①で処理AがD=2を読み、3倍の6を計算する。次に③で処理Bも更新前のD=2を読み、5を加えて7を得る。②で処理Aが6を書き込むが、④で処理Bが自分の計算結果7を上書きするため、最終的なDは7となる。これは排他制御をしないと先の更新が失われる「更新の消失」の典型例である。
出典:平成23年度 秋期 ITパスポート試験 問63(IPA)解説で登場
複数の利用者が同一データベースに同時にアクセスする処理のうち,データの整合性を保つための対策が不要な処理はどれか。
正解:図書情報の検索処理
要点:競合対策が要るのは更新処理、検索は読むだけなので不要
整合性を保つ対策(排他制御など)が必要になるのは、複数の利用者が同じデータを同時に更新しようとする場面である。座席予約や入札、注文の受付はいずれも同じレコードの更新が競合し得るため制御が要る。これに対し、検索は読み取るだけでデータを書き換えないため、更新の競合は生じない。
出典:平成24年度 秋期 ITパスポート試験 問80(IPA)
ある在庫管理システムは、複数の入力を同時並行して処理し、在庫数を更新しているが、排他制御は行っていない。ある時点での在庫数が100であったとき、入力された二つの…
正解:150
要点:排他制御なしの同時更新は後の書込みが先の更新を消す(ロストアップデート)
排他制御がないため、両方の処理が更新前の在庫数100を読み込んでしまう。入庫側は100+50=150、出庫側は100-30=70をそれぞれ計算し、先に出庫側が70を書き込んだ後、入庫側が150で上書きする。結果として出庫の更新が失われ、在庫数は150になる。これが更新結果の消失(ロストアップデート)である。
出典:平成27年度 春期 ITパスポート試験 問77(IPA)
DBMSにおいて、データへの同時アクセスによる矛盾の発生を防止し、データの一貫性を保つための機能はどれか。
正解:排他制御
要点:排他制御は同時更新による矛盾を防ぐ仕組み
排他制御は、あるデータを更新している間ほかの処理からの更新を待たせることで、同時アクセスによる矛盾(後から書いた内容が前の更新を消してしまう等)を防ぎ、一貫性を保つ機能である。ロックを掛け合って互いに待ち続ける状態がデッドロックで、これは排他制御に伴って起こり得る不具合であり、機能そのものではない。
出典・参考
公式シラバスの9 技術要素 > 57. トランザクション処理 > (1) 同時実行制御(排他制御)に掲載されている用語です。
解説は資格暗記が独自に作成しています。過去問の出典は各問題に記載のとおりです。