データベース|平成30年度 秋期 ITパスポート試験(特別措置試験) 問63
トランザクション処理におけるロールバックの説明として,適切なものはどれか。
- あるトランザクションが共有データを更新しようとしたとき,そのデータに対する他のトランザクションからの更新を禁止すること
- トランザクションが正常に処理されたときに,データベースへの更新を確定させること
- ✓ これが正解何らかの理由で,トランザクションが正常に処理されなかったときに,データベースをトランザクション開始前の状態にすること
- 複数の表を,互いに関係付ける列をキーとして,一つの表にすること
解説
うまく終わらなかった処理を、始める前の状態へ巻き戻します。
トランザクションとは、まとめて成り立たなければ意味のない一連の処理のことです。口座から引いて別の口座へ足す、という組がその例です。片方だけ済んで止まると、お金が消えたことになります。だから、途中で失敗したときは、始める前の状態へ丸ごと戻します。これがロールバックです。戻すための記録を別に取っておき、それを逆にたどって元へ戻します。うまく終わったときは、変更を確定させます。こちらはコミットで、ロールバックと対になります。戻す範囲は、一つのトランザクションの中だけです。すでに終わった別の処理までは戻しません。戻す引き金は、途中の失敗のほかにもあります。利用者が取り消した場合や、機械が落ちた場合も同じです。立ち上げ直したときに、記録を見て自動で戻します。残る三つは、同じデータベースの中の別の操作です。
ほかの選択肢はなぜ違うのか
- あるトランザクションが更新している間、他からの更新を禁じるという肢です。これは排他制御にあたります。待たせるぶん遅くなります。範囲を狭くする工夫が要ります。同時に触って壊れるのを防ぐ仕組みで、失敗した後に戻す話ではありません。
- 正常に処理されたときに更新を確定させるという肢です。これはコミットにあたります。ロールバックと対になっていて、どちらもトランザクションの終わり方です。確定した後は取り消せません。分かれ目は、うまくいったかどうかです。
- 複数の表を、関係付ける列を鍵にして一つの表にするという肢です。これは結合と呼ばれる操作です。表からほしい形を取り出すための操作で、処理の失敗とは関わりません。鍵の列がそろっていないと結べません。四つの中で最も遠い肢です。
この問題に関係する言葉
- ロールバック
- コミット
- トランザクションデータベースへの一連の処理をひとまとめにした単位のこと。途中で失敗すると開始前の状態へ戻され、中途半端な更新が残りません。
- 排他制御同じデータを同時に更新しても、矛盾が起きないようにする仕組みです。先の処理が終わるまで、後の処理を待たせて防ぎます。
- データベースたくさんのデータを決まった形で貯め、探したり書き換えたりできるようにした仕組み。多くの人が同時に使うことを前提にしています。
出典:平成30年度 秋期 ITパスポート試験(特別措置試験) 問63
同じ単元をまとめて解くならデータベースへ。
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)