こんにちは、フルスタックエンジニアのryuです。
今回の記事では、基本情報技術者試験過去問解説です。トランザクション処理の状態遷移についての問題を解説します。コミットやアボートなどのトランザクションの状態を理解しましょう。
トランザクション処理で取ることのない状態遷移はどれか
今回の記事は、以下の問題について解説します。
一つのトランザクションはトランザクションを開始した後,五つの状態(アクティブ,アボート処理中,アボート済,コミット処理中,コミット済)を取り得るものとする。このとき,取ることのない状態遷移はどれか。
遷移前の状態 | 遷移後の状態 | |
ア | アボート処理中 | アボート済 |
イ | アボート処理中 | コミット処理中 |
ウ | コミット処理中 | アボート処理中 |
エ | コミット処理中 | コミット済み |
出典:基本情報技術者令和元年秋期 午前問28
答えは、『イ』の「アボート処理中→コミット処理中」です。今回はトランザクション処理の状態について解説します!
その他の基本情報技術者試験過去問解説記事はこちらです。
トランザクション処理とは
ここからは、トランザクション処理について詳しく解説します。
トランザクション処理は複数の処理をまとめたもの
トランザクション処理とは、複数の処理をまとめて1つの処理として実行し、データの整合性を保つためのものです。
wikipediaには以下のように書かれています。
トランザクションは、データベースをある一貫した状態から別の一貫した状態へ変更するアクションを1つに束ねたものである。トランザクション処理は、既知の一貫した状態のデータベースを維持するよう設計されており、相互依存のある複数の操作が全て完了するか、全てキャンセルされることを保証する。
(引用:トランザクション処理 – Wikipedia)
例えば、銀行の送金処理を考えてみます。自分の口座と相手の口座でお金の移動があります。データとしては、自分の口座にお金が引かれ、相手の口座にお金がたされます。この2つの処理がどちらかだけ成功した場合、金額に矛盾が生じます。
したがって、2つの操作が両方成功するか、両方失敗することを保証する必要があり、データ不整合が生じないようにします。トランザクション処理はそのような保証をするよう設計されています。
トランザクションの処理の流れ
トランザクション処理は開始からコミットまでで一連の処理が完了します。
トランザクションが失敗した場合、ロールバックを行い、処理の開始前の状態に戻す必要があります。
アボートはトランザクションの途中で処理を強制的に中断してトランザクションをロールバックする処理のことです。
つまり、コミット処理中にアボード処理へ遷移することはあっても、アボート処理中にコミット処理に遷移することはありません。
過去問解説まとめ
今回の記事は、以下の問題について解説しました。
一つのトランザクションはトランザクションを開始した後,五つの状態(アクティブ,アボート処理中,アボート済,コミット処理中,コミット済)を取り得るものとする。このとき,取ることのない状態遷移はどれか。
遷移前の状態 | 遷移後の状態 | |
ア | アボート処理中 | アボート済 |
イ | アボート処理中 | コミット処理中 |
ウ | コミット処理中 | アボート処理中 |
エ | コミット処理中 | コミット済み |
出典:基本情報技術者令和元年秋期 午前問28
答えは、『イ』の「アボート処理中→コミット処理中」です。
以上で解説を終わります。当ブログでは、このようなネットワークに関する内容や基本情報技術者試験の過去問解説をしているので興味のある方は引き続きご覧ください。
こちらのUdemyの講座もオススメです。