銀行の振込やネット通販の注文など、システムでは「必ず正しく処理される」ことが求められます。
そこで登場するのが トランザクション処理。
「途中で止まらない」「一貫性が保たれる」といった特性があり、障害が起きてもデータを守る仕組みが組み込まれています。
今回は、ITパスポート試験でも頻出の ACID特性、トランザクション制御、同時実行制御、障害回復 を整理して学びましょう。
トランザクションとは
- 一連の処理を「ひとまとめ」にしたもの。
例:銀行振込 → 「残高引き落とし」+「振込先へ入金」 - どちらか片方だけ成功するのはNG。必ずセットで処理される。
ACID特性
- Atomicity(原子性):全部実行されるか、全く実行されないか(オールorナッシング)
- Consistency(一貫性):処理前後でデータの整合性が保たれる
- Isolation(独立性):同時に実行されても影響を受けない
- Durability(耐久性):処理が完了したら障害があっても結果が残る
トランザクション制御
- コミット:処理を確定させる
- ロールバック:処理を取り消し、元に戻す
- 2相コミットメント:分散処理でも矛盾が出ないようにコミットを確認
同時実行制御(排他制御)
- アンロック:同時利用できるようにする制御
- デッドロック:互いに資源を待ち合って処理が止まる状態
障害回復
- チェックポイント:ある時点の状態を記録しておく
- ロールフォワード(前進復帰):ログを使って直前の状態まで進める
- ロールバック(後退復帰):障害前の状態に戻す
よくある質問(FAQ)
- Qコミットとロールバックの違いは?
- A
コミットは確定処理、ロールバックは取り消しです。
- Qデッドロックはどう防ぐの?
- A
処理の順序を工夫したり、タイムアウトを設定する方法があります。
- Qトランザクションは必ずACID特性を持つの?
- A
基本的には持ちますが、最近は性能を重視してACIDを緩和したシステム(BASE理論など)もあります。
練習問題
Q1. 銀行振込で「残高引き落とし」だけ成功して「入金」が失敗した場合、どの特性に反する?
A. 原子性
B. 一貫性
C. 独立性
D. 耐久性
正解:
A
→ どちらも成功するか、どちらも失敗する必要があります。
Q2. トランザクションを確定させる処理はどれ?
A. ロールバック
B. コミット
C. チェックポイント
D. デッドロック
正解:
B
→ コミットが確定処理です。
Q3. 複数の処理が資源を待ち合って進まなくなる現象を何という?
A. ロールバック
B. アンロック
C. デッドロック
D. コミット
正解:
C
→ デッドロックは典型的な同時実行制御の問題です。
コメント