トランザクションの更新はいつ確定する?
ITパスポート試験 令和3年度 問62 / データベース › トランザクション処理
過去問にチャレンジ
金融システムの口座振替では,振替元の口座からの出金処理と振替先の口座への入金処理について,両方の処理が実行されるか,両方とも実行されないかのどちらかであることを保証することによってデータベースの整合性を保っている。データベースに対するこのような一連の処理をトランザクションとして扱い,矛盾なく処理が完了したときに,データベースの更新内容を確定することを何というか。
- ア
コミット
- イ
スキーマ
- ウ
ロールフォワード
- エ
ロック
会話形式の解説
講師注目するのは、一連の処理が矛盾なく終わった後、更新をどうするかです。
受験者出金だけ終わって入金ができないと困ります。両方を一つの処理として扱うのですね。
講師はい。全て実行するか、全く実行しないかという性質を原子性といいます。両方が正常に終わった後、更新を確定する操作がコミットです。
受験者スキーマもデータベースの用語ですが、確定とは関係がありますか。
講師スキーマはデータベースの構造を定義するものです。処理結果を確定する操作ではありません。
受験者ロールフォワードは、更新を進めるような名前なので迷います。
講師ロールフォワードは更新ログを適用して障害から復旧する方法です。正常に終わった処理の更新を確定する操作とは違います。
受験者ロックは、出金と入金が終わるまで更新を確定させない仕組みですか。
講師ロックは、処理の競合を防ぐためにデータへのアクセスを制限する仕組みです。更新の確定そのものはコミットで行います。
受験者正常に完了したらコミットで確定するのですね。途中で失敗したときはどうしますか。
講師途中で失敗した場合は、ロールバックで変更を取り消します。確定はコミット、取り消しはロールバックと対にすると区別しやすいです。
まとめ
口座振替の出金と入金は、一つのトランザクションとして扱います。全て実行するか、全く実行しないかという性質が原子性です。正常に完了した更新を確定する操作はコミットです。途中で失敗した処理の変更は、ロールバックで取り消します。
解答・解説
正解はアです
この問題のテーマ
トランザクションが正常に完了したとき、データベースの更新を確定する操作を問う問題です。
解き方の考え方
口座振替では、出金と入金を一つのトランザクションとして扱います。両方を実行するか、どちらも実行しないかという性質を原子性といいます。設問が聞いているのは、その一連の処理が矛盾なく終わった後に更新を確定する操作です。
選択肢ごとの解説
- ○ア コミットアのコミットは、正常に完了したトランザクションの更新を確定する操作です。出金と入金の両方が矛盾なく処理された後に行うため、これが正解です。
- ×イ スキーマイのスキーマは、データベースの構造を定義するものです。処理結果を確定する操作ではありません。
- ×ウ ロールフォワードウのロールフォワードは、更新ログを適用して障害から復旧する方法です。正常に終わった処理の更新を確定する操作とは異なります。
- ×エ ロックエのロックは、処理の競合を防ぐためにデータへのアクセスを制限する仕組みです。更新を確定する操作ではありません。
補足
「確定」と「取り消し」を対にして覚えると区別しやすくなります。正常に完了した更新を確定するのがコミット、途中で失敗した処理の変更を取り消すのがロールバックです。
POINT
- トランザクションは、複数の処理を一つの単位として扱います。
- 原子性は、一連の処理が全て実行されるか、全く実行されない性質です。
- 正常に完了したトランザクションの更新は、コミットで確定します。
- 処理が途中で失敗した場合は、ロールバックで変更を取り消します。
