マナビングITパスポート

トランザクションの更新はいつ確定する?

ITパスポート試験 令和3年度 問62 / データベース › トランザクション処理

過去問にチャレンジ

令和3年度 問62

金融システムの口座振替では,振替元の口座からの出金処理と振替先の口座への入金処理について,両方の処理が実行されるか,両方とも実行されないかのどちらかであることを保証することによってデータベースの整合性を保っている。データベースに対するこのような一連の処理をトランザクションとして扱い,矛盾なく処理が完了したときに,データベースの更新内容を確定することを何というか。

  1. ア

    コミット

  2. イ

    スキーマ

  3. ウ

    ロールフォワード

  4. エ

    ロック

会話形式の解説

講師講師
注目するのは、一連の処理が矛盾なく終わった後、更新をどうするかです。
受験者受験者
出金だけ終わって入金ができないと困ります。両方を一つの処理として扱うのですね。
講師講師
はい。全て実行するか、全く実行しないかという性質を原子性といいます。両方が正常に終わった後、更新を確定する操作がコミットです。
受験者受験者
スキーマもデータベースの用語ですが、確定とは関係がありますか。
講師講師
スキーマはデータベースの構造を定義するものです。処理結果を確定する操作ではありません。
受験者受験者
ロールフォワードは、更新を進めるような名前なので迷います。
講師講師
ロールフォワードは更新ログを適用して障害から復旧する方法です。正常に終わった処理の更新を確定する操作とは違います。
受験者受験者
ロックは、出金と入金が終わるまで更新を確定させない仕組みですか。
講師講師
ロックは、処理の競合を防ぐためにデータへのアクセスを制限する仕組みです。更新の確定そのものはコミットで行います。
受験者受験者
正常に完了したらコミットで確定するのですね。途中で失敗したときはどうしますか。
講師講師
途中で失敗した場合は、ロールバックで変更を取り消します。確定はコミット、取り消しはロールバックと対にすると区別しやすいです。

まとめ

口座振替の出金と入金は、一つのトランザクションとして扱います。全て実行するか、全く実行しないかという性質が原子性です。正常に完了した更新を確定する操作はコミットです。途中で失敗した処理の変更は、ロールバックで取り消します。

解答・解説

正解はアです

この問題のテーマ

トランザクションが正常に完了したとき、データベースの更新を確定する操作を問う問題です。

解き方の考え方

口座振替では、出金と入金を一つのトランザクションとして扱います。両方を実行するか、どちらも実行しないかという性質を原子性といいます。設問が聞いているのは、その一連の処理が矛盾なく終わった後に更新を確定する操作です。

選択肢ごとの解説

  1. ○ア  コミット
    アのコミットは、正常に完了したトランザクションの更新を確定する操作です。出金と入金の両方が矛盾なく処理された後に行うため、これが正解です。
  2. ×イ  スキーマ
    イのスキーマは、データベースの構造を定義するものです。処理結果を確定する操作ではありません。
  3. ×ウ  ロールフォワード
    ウのロールフォワードは、更新ログを適用して障害から復旧する方法です。正常に終わった処理の更新を確定する操作とは異なります。
  4. ×エ  ロック
    エのロックは、処理の競合を防ぐためにデータへのアクセスを制限する仕組みです。更新を確定する操作ではありません。

補足

「確定」と「取り消し」を対にして覚えると区別しやすくなります。正常に完了した更新を確定するのがコミット、途中で失敗した処理の変更を取り消すのがロールバックです。

POINT

  • トランザクションは、複数の処理を一つの単位として扱います。
  • 原子性は、一連の処理が全て実行されるか、全く実行されない性質です。
  • 正常に完了したトランザクションの更新は、コミットで確定します。
  • 処理が途中で失敗した場合は、ロールバックで変更を取り消します。

※出典:令和3年度 ITパスポート試験 問62