この記事ではトランザクション処理についてIT初心者にも分かりやすく解説します。
トランザクション処理
- データベースに対してまとめて処理する必要がある操作を一括りにした処理。
- ACID特性はトランザクション処理が満たす必要がある4つの特性。
コミットとロールバック
- コミットはトランザクション処理が成功した時に変更したデータを確定する処理。
- ロールバックはトランザクション処理が失敗した時に、データを処理前の状態に戻す処理。
基本情報ではトランザクション処理に関する問題が出題されます。是非最後までご覧ください。
トランザクション処理
トランザクション処理とは、データベースに対してまとめて処理する必要がある操作を一括りにした処理のことです。トランザクション処理は全てを完全に行うか、全く行わないかのどちらかです。
トランザクション処理の例は銀行の振込処理です。振込処理は4つの処理から成り立ち、中断することは許されません。例えば、送金口座から残高を減らした後、システム障害が起きて入金口座の残高を増やす処理が行われなかったとします。口座からお金は減ったのに、送金されていないことになるので凄く困りますよね。なので、処理を行う時は4つ全て行う必要があり、途中で失敗した時は一番最初の状態に戻す必要があります。
このように、一連で行う必要がある操作の一括りをトランザクション処理と言います。
ACID特性
トランザクション処理はACID特性という4つの特徴を満たす必要があります。
原子性(Atomicity)
トランザクション処理は全て完了するか、全く実行されないかのどちらかで終了する必要があります。
一貫性(Consistency)
トランザクション処理の前後でデータ不整合が生じないようにする必要があります。例えば、残高が100円しかないのに1000円の振込を実行したら、残高が-900円になり、おかしなデータが生じてしまいますよね。このような不整合を起こさないようにするのが一貫性です。
独立性(Isolation)
複数のトランザクション処理を実行しても、他のトランザクション処理の影響を受けずに実行できるようにする必要があります。例えば、残高が1000円あるときに、100円の銀行引き落としと200円の銀行引き落としが同時に実行されたとします。
この時、1000円-100円=900円の処理と900円-200円=700円の処理がそれぞれ独立して行われる必要があります。つまり残高は700円になるということですね。
同時に行われたから、1000円-100円=900円、1000円-200円=800円で計算して残高が800円になりました。では困りますよね。
トランザクション処理は1つずつ完了させる必要があるという性質が独立性になります。
耐久性(Durability)
トランザクション処理が完了した後は、データベースに障害が発生しても結果を保存する必要があります。銀行のシステムに障害が発生してよく分からなくなったので残高を0円にします、だと困りますよね。例え、障害が発生してもデータは保存しておく必要があります。
コミットとロールバック
トランザクション処理が成功または失敗した時にデータベースに対して行う操作です。
コミット
トランザクション処理が成功した際に、変更されたデータを確定する操作がコミットです。コミットを行うことでデータを永続的に保存します。
ロールバック
トランザクション処理が失敗した際に、データをトランザクション処理前の状態に戻す操作をロールバックと言います。
ちなみに、トランザクション処理実行中にデータベースに障害が発生して強制終了することをアボートと言います。アボートが発生した時も、もちろんロールバックする必要があります。
基本情報技術者試験での出題例
令和6年度問7
基本情報技術者
科目A 令和6年度問7
DBMSに実装すべき原子性(atomicity)を説明したものはどれか。
ア 同一データベースに対する同一処理は,何度実行しても結果は同じである。
イ トランザクション完了後にハードウェア障害が発生しても,更新されたデータベースの内容は保証される。
ウ トランザクション内の処理は,全てが実行されるか,全てが取り消されるかのいずれかである。
エ 一つのトランザクションの処理結果は,他のトランザクション処理の影響を受けない。
正解は”ウ”
トランザクション処理は全て完了するか、全く実行されないかのどちらかで終了する必要があります。これを原子性と言います。
令和5年度問7
基本情報技術者
科目A 令和5年度問7
トランザクションが,データベースに対する更新処理を完全に行うか,全く処理しなかったのように取り消すか,のどちらかの結果になることを保証する特性はどれか。
ア 一貫性(consistency)
ウ 耐久性(durability)
イ 原子性(atomicity)
エ 独立性(isolation)
正解は”イ”
トランザクション処理は全て完了するか、全く実行されないかのどちらかで終了する必要があります。これを原子性と言います。
令和元年度秋期問28
基本情報技術者
午前試験 令和元年度秋期問28
一つのトランザクションはトランザクションを開始した後,五つの状態(アクティブ,アボート処理中,アボート済,コミット処理中,コミット済)を取り得るものとする。このとき,取ることのない状態遷移はどれか。
正解は”イ”
アボートは強制終了で、コミットはトランザクション処理が成功した時にデータを確定する操作です。
強制終了したあとに、トランザクション処理のデータを確定することは無いので、答えはイです。
平成29年度秋期問29
基本情報技術者
午前試験 平成29年度秋期問29
RDBMSの機能によって実現されるトランザクションの性質はどれか。
ア ACID特性 イ 関数従属性
ウ 候補キーの一意性 エ データ独立性
正解は”ア”
平成28年度春期問28
基本情報技術者
午前試験 平成28年度春期問28
トランザクションが,データベースに対する更新処理を完全に行うか,全く処理しなかったのように取り消すか,のどちらかの結果になることを保証する特性はどれか。
ア 一貫性(consistency) イ 原子性(atomicity)
ウ 耐久性(durability) エ 独立性(isolation)
正解は”イ”
基本情報に関する他の記事
ハードウェア | ソフトウェア | システム構成 |
ネットワーク | データベース | 開発手法 | 情報セキュリティ |
データベースに関する記事
関係データベースについての記事
【基本情報】関係データベースの基本!関係演算も解説!
【基本情報】トランザクション処理について解説
【基本情報】関係データベースの排他制御について解説
SQLについての記事
障害対応についての記事