ITパスポート過去問 平成30年度(2018年)問63
トランザクション処理におけるロールバックの説明として,適切なものはどれか。
選択肢
- ア:あるトランザクションが共有データを更新しようとしたとき,そのデータに対する他のトランザクションからの更新を禁止すること
- イ:トランザクションが正常に処理されたときに,データベースへの更新を確定させること
- ウ:何らかの理由で,トランザクションが正常に処理されなかったときに,データベースをトランザクション開始前の状態にすること
- エ:複数の表を,互いに関係付ける列をキーとして,一つの表にすること
- ア
- イ
- ウ
- エ
正解と解き方・学習ポイント(AI解説)
ロールバックとは、トランザクションが途中で失敗した場合に、更新内容を取り消してデータベースをトランザクション開始前の状態に戻す操作です。これにより、処理途中の状態が残ってデータの不整合が発生することを防ぎます。
Point
この問題は、トランザクション処理の基本用語であるロールバックと、コミット、排他制御(ロック)、結合(JOIN)を区別できるかを確認することがねらいです。
解くために必要な知識
この問題を解くには、トランザクション処理に関連する基本用語の理解が必要です。
用語の整理
| 用語 | 意味 |
|---|---|
| トランザクション | データベースに対する一連の処理をひとまとまりとして扱う単位です。原則として、すべて成功するか、すべて取り消すかのどちらかになります。 |
| ロールバック | トランザクションが途中で失敗した場合に、更新内容を取り消して、データベースをトランザクション開始前の状態に戻す操作です。 |
| コミット | トランザクションが正常に完了した場合に、データベースへの更新内容を確定させる操作です。 |
他の選択肢に出てくる用語
| 用語 | 意味 |
|---|---|
| 排他制御(ロック) | 複数のトランザクションが同じデータを同時に更新して不整合が起きることを防ぐために、あるトランザクションの更新中は他の更新を制限する仕組みです。 |
| 結合(JOIN) | 複数の表を、互いに関係付ける列(キー)を基にして、検索結果として1つの表のように扱う操作です。 |
問題の解法手順
各選択肢の整理
| 選択肢 | 内容が表す用語 | ロールバックに該当するか |
|---|---|---|
| ア | 排他制御(ロック) | × |
| イ | コミット | × |
| ウ | ロールバック | 〇 |
| エ | 結合(JOIN) | × |
判断手順
-
失敗した処理を取り消して開始前に戻す操作がロールバックです。
-
正常終了して更新を確定する操作はコミットです。
-
同時更新を防ぐ仕組みは排他制御(ロック)です。
-
複数の表を共通の列で1つにまとめる操作は結合(JOIN)です。
よって「ウ」が適切です。
選択肢ごとの解説
- ア:不正解
共有データへの更新を他トランザクションから禁止するのは、同時更新の矛盾を防ぐためのロック(排他制御)の説明です。ロールバックではありませんので誤りです。
- イ:不正解
正常に処理できたときに更新を確定させるのはコミットです。ロールバックではありませんので誤りです。
- ウ:正解
トランザクションが正常に処理されなかった場合に、更新内容を取り消して開始前の状態へ戻すのがロールバックです。よって正解です。
- エ:不正解
複数の表をキー列で関係付けて1つの結果にするのは結合(JOIN)です。ロールバックではありませんので誤りです。
まとめ
ロールバックとは、トランザクションが途中で失敗した場合に、更新内容を取り消してデータベースをトランザクション開始前の状態に戻す操作です。これにより、処理途中の状態が残ってデータの不整合が発生することを防ぎます。
テクノロジ系 > 技術要素 > データベース
共有データへの更新を他トランザクションから禁止するのは、同時更新の矛盾を防ぐためのロック(排他制御)の説明です。ロールバックではありませんので誤りです。
正常に処理できたときに更新を確定させるのはコミットです。ロールバックではありませんので誤りです。
トランザクションが正常に処理されなかった場合に、更新内容を取り消して開始前の状態へ戻すのがロールバックです。よって正解です。
複数の表をキー列で関係付けて1つの結果にするのは結合(JOIN)です。ロールバックではありませんので誤りです。