トランザクションに関する記述|情報セキュリティマネジメント 令和元年 秋期午前試験 問46
出典:令和元年秋期 午前 問46
分野:データベース / トランザクション処理
データベースのトランザクションに関する記述のうち,適切なものはどれか。
- ア:他のトランザクションにデータを更新されないようにするために,テーブルに対するロックをアプリケーションプログラムが解放した。
- イ:トランザクション障害が発生したので,異常終了したトランザクションをDBMSがロールフォワードした。
- ウ:トランザクションの更新結果を確定するために,トランザクションをアプリケーションプログラムがロールバックした。
- エ:複数のトランザクション間でデッドロックが発生したので,トランザクションをDBMSがロールバックした。
TSUNAGARU-ADVICE
まず押さえたいこと
データベースでデッドロックが発生すると、複数のトランザクションがお互いのロック解除を待ち続け、処理を進められなくなります。この場合、DBMSは一方のトランザクションをロールバックしてデッドロックを解消することがあります。
迷ったときの判断軸
コミットは更新結果を確定、ロールバックは更新を取り消して元に戻すと整理しましょう。トランザクション障害時の復旧では、未完了トランザクションをロールバックし、必要に応じて完了済みの更新をロールフォワードします。また、ロックの管理は通常DBMSが担います。
学習の優先度
トランザクション制御はデータベース分野の基本論点で、科目Bとの直接的な関連は強くありません。コミット・ロールバック・ロック・デッドロックの役割を押さえたら、脅威・リスク・アクセス制御・ログ分析・インシデント対応などのセキュリティ分野を優先しましょう。
データベースのトランザクションでは、複数の処理が同じデータを利用することがあり、その際にはロックによって同時更新などを制御します。ただし、複数のトランザクションが互いに相手のロック解除を待ち続けるデッドロックが発生することがあります。
デッドロックが発生すると、そのままでは処理を続けられないため、DBMSは通常、関係するトランザクションの一つをロールバックして処理を取り消し、ロックを解放します。したがって、エが適切です。
❌他選択肢が誤りの理由ア:他のトランザクションにデータを更新されないようにするために,テーブルに対するロックをアプリケーションプログラムが解放した。
⇒他のトランザクションによる更新を防ぐためには、ロックを設定・保持する必要があります。ロックを解放すると、他のトランザクションがそのデータへアクセスできるようになります。
イ:トランザクション障害が発生したので,異常終了したトランザクションをDBMSがロールフォワードした。
⇒トランザクション障害で異常終了した処理は、一般にロールバックによって更新前の状態へ戻します。ロールフォワードは、バックアップから復旧した後などに更新ログを使って、データベースを障害直前の状態へ進める処理です。
ウ:トランザクションの更新結果を確定するために,トランザクションをアプリケーションプログラムがロールバックした。
⇒更新結果を確定する処理はコミットです。ロールバックは、トランザクションによる更新を取り消して、処理前の状態へ戻すために行います。