本文へスキップ

平成26年度 秋期 ITパスポート試験 問71

この問題の解説と、これまでの解答の記録です。

問71
頻出度★☆☆

図は処理1, 処理2の順でデータベースを更新するトランザクションの処理フローを示している。図中のa~cのうち, コミット処理 (処理1, 処理2の更新結果を確定させる処理) に該当する箇所だけを全て挙げたものはどれか。

出典 平成26年度 秋期 ITパスポート試験 問71
解説

問 71

  • ア

    正解 正解は ア (a)。トランザクションは「処理1と処理2をまとめて 1 つの不可分な単位として扱う」ものなので、更新結果を確定 (コミット) してよいのは、処理1・処理2の両方が正常終了したときだけです。図をたどると、「処理1が正常終了したか?」が Yes、続く「処理2が正常終了したか?」も Yes という経路の先にあるのは a だけです。したがってコミット処理に該当する箇所は a のみとなります。

  • 不正解イ

    a は正しいが b が誤り。b は「処理2が正常終了したか?」が No のときに通る箇所で、処理2が失敗している以上、更新結果を確定させてはいけません。b では処理1の更新も含めて取り消す (ロールバックする) 必要があるので、コミット処理には該当しません。

  • 不正解ウ

    b も c も異常終了した経路にある箇所であり、どちらもコミットではなくロールバックに当たります。さらに、両方が正常終了した唯一の経路にある a が含まれていない点でも誤りです。

  • 不正解エ

    c は「処理1が正常終了したか?」が No のときに通る箇所です。処理1の段階で失敗しており、処理2は実行すらされていないので、確定させるべき正常な更新結果がありません。c は処理1の更新を取り消すロールバック処理であって、コミット処理ではありません。

ここがポイント
  • トランザクションは複数の更新をまとめて「すべて反映」か「すべて取消」のどちらかにする不可分な処理単位 (ACID 特性の原子性)。したがってコミットできるのは、含まれるすべての処理が正常終了した経路だけ。
  • コミット (更新結果を確定) とロールバック (更新前の状態に戻す) の区別。フローチャート問題では、判定の Yes/No をたどって「全処理が成功した経路」を特定し、その先の箇所がコミット、異常終了から分岐した先の箇所がロールバックと読み取る。
用語

解答の記録