データベース|令和元年度 秋期 情報セキュリティマネジメント試験 午前 問46
データベースのトランザクションに関する記述のうち,適切なものはどれか。
- 他のトランザクションにデータを更新されないようにするために,テーブルに対するロックをアプリケーションプログラムが解放した。
- トランザクション障害が発生したので,異常終了したトランザクションをDBMSがロールフォワードした。
- トランザクションの更新結果を確定するために,トランザクションをアプリケーションプログラムがロールバックした。
- ✓ これが正解複数のトランザクション間でデッドロックが発生したので,トランザクションをDBMSがロールバックした。
解説
デッドロック時はDBMSがトランザクションをロールバックします。
複数のトランザクションが、互いに相手が確保しているデータの解放を待ち合って動けなくなる状態がデッドロックです。この状態は放置しても解消しないため、DBMSがどちらかのトランザクションを選んで処理を取り消すロールバックを行い、確保していたロックを解放させることで解決します。だから、デッドロックの発生時にDBMSがトランザクションをロールバックしたという記述が適切です。データベースの一貫性を守るためのロックの管理や取消しの処理は、アプリケーションプログラムが個々に行うのではなく、DBMSが担うところに意味があります。
ほかの選択肢はなぜ違うのか
- ロックを解放すると、他のトランザクションはそのデータを更新できるようになります。更新されないようにするためという目的に対して、解放という行為は正反対です。目的と行為がかみ合っていないので、この記述は適切ではありません。
- 異常終了したトランザクションに行われるのは、更新を取り消して元に戻すロールバックです。ロールフォワードは、バックアップから復元したデータベースを障害の直前まで進める操作を指します。
- ロールバックは、更新を取り消して元に戻す操作です。更新結果を確定したいときに行う操作ではないので、確定するためにロールバックしたという記述では意味が逆になっています。
この問題に関係する言葉
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
- DBMSデータベースを管理するソフト。複数の処理が同じデータを同時に更新しても矛盾しないよう、排他制御などを行います。
出典:令和元年度 秋期 情報セキュリティマネジメント試験 午前 問46
同じ単元をまとめて解くならデータベースへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)