戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

情報セキュリティマネジメント 2019年 秋期 午前(科目A)46


問題文

データベースのトランザクションに関する記述のうち、適切なものはどれか。

選択肢

他のトランザクションにデータを更新されないようにするために、テーブルに対するロックをアプリケーションプログラムが解放した。
トランザクション障害が発生したので、異常終了したトランザクションをDBMSがロールフォワードした。
トランザクションの更新結果を確定するために、トランザクションをアプリケーションプログラムがロールバックした。
複数のトランザクション間でデッドロックが発生したので、トランザクションをDBMSがロールバックした。(正解)

🔒 解説は解答すると表示されます

トランザクション回復処理【情報セキュリティマネジメント解説】

正解の理由

トランザクション(複数の処理を一つのまとまりとして扱う動作単位)の管理はDBMS(Database Management System:データベース管理システム)が行います。複数のトランザクションが互いに資源(例:行やテーブルのロック)を待って進まなくなる状態をデッドロックと呼びます。DBMSはこれを検出すると、片方のトランザクションを強制終了して影響を取り消す(ロールバック:実行前の状態に戻す)ことで他を進めます。したがって、選択肢のうち正しいのは です。
(ポイント)
  • DBMSがデッドロック解消のためにロールバックを行うのは標準的な動作です。
  • ロールバックは「取り消し」、ロールフォワードは「ログから変更を再適用すること」で役割が異なります。

解法ステップ

  1. 各選択肢からキーワードを抽出する(ロック解放、ロールフォワード、ロールバック、DBMS/アプリ)。
  2. 用語の意味を確認する:
    • ロックは誰が管理するか(DBMSが通常管理)。
    • ロールバック=取り消し、ロールフォワード=ログの再適用。
  3. 「誰が実行するか(アプリかDBMSか)」と「その処理の目的(確定・取り消し・回復)」を照合する。
  4. 矛盾する組合せ(例:アプリがロック解放して他トランザクションを防ぐなど)を除外する。
  5. デッドロック時にDBMSがロールバックする点で を選ぶ。

選択肢別の誤答解説

  • ア: 「テーブルに対するロックをアプリケーションプログラムが解放した」
    • 誤り。ロック(排他制御)は通常DBMSが自動で管理します。アプリが勝手に解放すると整合性が崩れるため、アプリ任せにしません。アプリはトランザクションの開始・終了は指示できますが、実際の細かいロック制御はDBMSの責任です。
  • イ: 「異常終了したトランザクションをDBMSがロールフォワードした」
    • 誤り。ロールフォワード(redo)はバックアップから復旧する際にログを適用して進める操作で、主にシステム全体の復旧に用います。一方、異常終了した(未コミットの)個別トランザクションはDBMSがロールバック(undo)して取り消すのが通常です。
  • ウ: 「トランザクションの更新結果を確定するために、トランザクションをアプリケーションプログラムがロールバックした」
    • 誤り。更新結果を確定する操作はコミット(commit)です。ロールバックは確定の逆で、更新を取り消します。アプリがロールバックすると確定はされません。
  • エ: 「複数のトランザクション間でデッドロックが発生したので、トランザクションをDBMSがロールバックした」
    • 正しい。デッドロック解消のためにDBMSが一方を強制的にロールバックするのが標準的な対応です。

よくある誤解

  1. 「ロールフォワードとロールバックは同じ操作だ」
    • 異なります。ロールバック(undo)は変更を取り消すこと、ロールフォワード(redo)はログを使って変更を再適用することです。目的とタイミングが違います。
  2. 「アプリがロックを管理すべきだ」
    • 実務ではアプリはトランザクションの開始・終了を指示しますが、細かなロック管理はDBMSに任せます。手動でロック操作すると不整合やデッドロックを招きやすいです。

補足コラム

  • ACID特性:トランザクションは一般にACID(Atomicity:原子性、Consistency:一貫性、Isolation:独立性、Durability:永続性)を満たすことが望まれます。ロールバックは「Atomicity(原子性)」を確保するための機能です。
  • 実務イメージ:経理システムで同じ売上データを同時に更新しようとして、処理がぶつかり先に進めない場合、DBMSが一方を取り消して他方を通す、といった挙動です。運用ではログ取得や定期バックアップ、デッドロック検出の設定を確認しておきます。

FAQ

Q1: ロールバックは誰でも実行できますか?
A1: アプリケーションから「ロールバック命令」を出すことはできますが、DBMSが実際に取り消し処理(undo)を行います。またDBMSは内部で強制ロールバックも行えます(デッドロック時など)。
Q2: デッドロックが起きたら必ず片方がロールバックされるのですか?
A2: 多くのDBMSはデッドロック検出後に一方(通常コストや優先度が低い方)をロールバックして解消します。ただし、設定や実装によって異なる場合もあります。
Q3: ロールフォワードは日常的に使うものですか?
A3: 通常は障害後の復旧作業で使います。日常運用での個別トランザクション制御にはあまり関係しません。

関連キーワード: トランザクション、ロールバック、ロールフォワード、デッドロック、DBMS、排他制御、ACID、障害復旧、整合性、コミット
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

情報セキュリティマネジメント
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について