ITパスポート 2011年 春期 問78
問題文
データベースのトランザクション処理に関する次の記述中のa, bに入れる字句の適切な組合せはどれか。
複数のユーザが同時に同じデータを更新しようとしたとき、データの整合性を保つために、そのデータへのアクセスを一時的に制限する仕組みを[ a ]という。これを実現する一つの方法は、データを更新する前に、そのデータに[ b ]をかけ、処理が終了するまではほかのユーザからのアクセスを制限することである。

選択肢
ア:
イ:
ウ:
エ:(正解)
🔒 解説は解答すると表示されます
排他制御とロック【ITパスポート解説】
正解の理由
同じデータに複数のユーザが同時に更新を試みると、データの矛盾が起きます。こうした矛盾を防ぐために「ある時点では一方だけが更新できるようにアクセスを制限する仕組み」が必要です。この仕組みを排他制御(はいたせいぎょ:英 exclusive control、他のアクセスを排して一つの利用にする制御)と呼びます。排他制御を行う具体的な手段がロック(英: lock、データに対するアクセス権の一時的な制限)です。
設問の文は「アクセスを一時的に制限する仕組み」を問うていますので主語は排他制御になります。また「データに○○をかけ、処理終了まで他を制限する」とある箇所はロックの説明です。したがって選択肢のエ(排他制御 と ロック)が本文の意味に合致します。
解法ステップ
- 問題文のキーワードを拾う:同時更新、整合性保持、一時的にアクセスを制限。
- 1の内容が「他を締め出して単独で操作させる」考えなら排他制御を連想する。
- 排他制御 = アクセスの排他(排する=他を除く)を行う仕組み。
- 「データに○○をかける」という表現は一般にロックを指す。
- ロックはデータへのアクセス権を一時的に取る操作。
- 選択肢を当てはめて正しい組合せを選ぶ(排他制御 + ロック → エ)。
選択肢別の誤答解説
-
ア(経路制御 / デッドロック)
- 経路制御はネットワークや配送の経路を管理する意味であり、データベースの同時更新制御を表す語ではありません。デッドロック(英: deadlock、複数の処理が互いに待ち合い進まなくなる状態)は排他制御の副作用として起き得ますが、設問の「仕組み」を表す語としては不適切です。
-
イ(経路制御 / ロック)
- ロックは合っているものの、経路制御が誤りです。問題が問うのはデータへのアクセスを制限する「仕組み」であり、それは排他制御と表現します。
-
ウ(排他制御 / デッドロック)
- 先頭の「排他制御」は正しいが、後半の「デッドロック」はロックや排他制御の結果(問題)です。文中で求められているのは「データにかけて他のアクセスを制限するもの」であり、これはロックです。
-
エ(排他制御 / ロック)
- 排他制御が仕組みを表し、ロックがその実現手段です。設問の両文に正しく対応します。
よくある誤解
-
ロック = デッドロック ではない
- ロックは制御手段で、デッドロックはその結果として複数のプロセスが互いに待ち合って止まる状態です。混同しやすいので注意してください。
-
排他制御は常に悪い影響だけという誤解
- 排他制御は整合性維持に必要です。ただし過度なロックは性能低下やデッドロックの原因になります。適切な粒度(小さく細かい単位でロックするか、大きな単位でロックするか)を考えることが重要です。
-
「経路制御」はデータベース制御の言葉だと思う誤解
- 経路制御はネットワークや配送などで使われる用語で、ここでは無関係です。
補足コラム
-
ロックの種類(簡単に)
- 共有ロック(shared lock): 読み取りは複数で可能だが、書き込みは排他にする。
- 排他ロック(exclusive lock): 書き込み時に他の読み書きを禁止する。
例えば銀行振込で口座残高を更新する場合は排他ロックが必要です。
-
排他制御の実装方式(入門)
- 悲観的ロック(pessimistic locking): 先にロックを取得して安全を確保する方式。
- 楽観的ロック(optimistic locking): まず処理を進め、保存時に整合性を確認して問題があればやり直す方式。
システムの性質(同時更新が多いか少ないか)で使い分けます。
-
デッドロックの対策
- タイムアウトで待ちを解除する、リソースの取得順序を統一する、待ちグラフで検出するなどの方法があります。
FAQ
Q1: トランザクション(transaction)って何ですか?
A1: トランザクションは「複数の処理を一つのまとまりとして扱う操作」です。全て成功するか全て失敗するかを保証します。例: 銀行の振込では振出口座の減算と入金口座の加算を両方成功させる必要があります。
A1: トランザクションは「複数の処理を一つのまとまりとして扱う操作」です。全て成功するか全て失敗するかを保証します。例: 銀行の振込では振出口座の減算と入金口座の加算を両方成功させる必要があります。
Q2: ロックすると誰でも更新できなくなるのですか?
A2: ロックの種類によります。排他ロックは他のユーザの読み書きを防ぎますが、共有ロックなら読み取りは許可します。用途に応じて使い分けます。
A2: ロックの種類によります。排他ロックは他のユーザの読み書きを防ぎますが、共有ロックなら読み取りは許可します。用途に応じて使い分けます。
Q3: デッドロックが起きたら必ず手動で直す必要がありますか?
A3: 多くのDBMS(データベース管理システム)は自動検出と解除機能を持っています。設計段階で対策を取るのが望ましいです。
A3: 多くのDBMS(データベース管理システム)は自動検出と解除機能を持っています。設計段階で対策を取るのが望ましいです。
関連キーワード: 排他制御、ロック、デッドロック、トランザクション、共有ロック、排他ロック、悲観的ロック、楽観的ロック、同時実行制御、整合性

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

