デッドロックとトランザクションのロールバック

デッドロック(Deadlock)は,複数のトランザクションが互いに相手のロック解除を待って処理が進まなくなる状態です。DBMSはこれを検知すると,一方のトランザクションを強制終了・ロールバックしてデッドロックを解消します。 ロックの解放は通常トランザクション終了(コミット・ロールバック)時に行われます。更新を防ぐために解放するのは誤りです。 異常終了したトランザクションに対しては,未完了の変更を取り消すロールバック(アボート)を行います。ロールフォワードは障害回復時にコミット済みトランザクションを再現する処理です。 更新結果を確定するためには「コミット(COMMIT)」を行います。ロールバックは更新を取り消す処理です。

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

出典令和元年度 秋期 情報セキュリティマネジメント試験 午前 問46
ア
他のトランザクションにデータを更新されないようにするために,テーブルに対するロックをアプリケーションプログラムが解放した。
イ
トランザクション障害が発生したので,異常終了したトランザクションをDBMSがロールフォワードした。
ウ
トランザクションの更新結果を確定するために,トランザクションをアプリケーションプログラムがロールバックした。
エ
複数のトランザクション間でデッドロックが発生したので,トランザクションをDBMSがロールバックした。