Home » database » トランザクション障害

トランザクション障害

運用設計では障害からの回復を考慮し設計する必要があります

トランザクションとはDBMS内で実行される分けることができない一連の処理の単位のことです

トランザクション障害とは、一連の処理であるトランザクションの途中で障害となり、更新中のデータに不整合が発生する障害です

ここでデータベース的に重要なことは、チェックポイント(CHECKPOINT)が取られる前のトランザクションか、チェックポイント(CHECKPOINT)が取られた後のトランザクションかということです

チェックポイントとは、データベースバッファキャッシュ内にある更新済みのデータをディスクに書き込むイベントです

コミット(COMMIT)を発行しても実際にはディスクに書き込みされていません

このチェックポイント(CHECKPOINT)が実行されて初めて確定されたことになります

ここで、何等かの障害が発生した時、

コミット(COMMIT)され、チェックポイント(CHECKPOINT)が取られた後のトランザクションは障害回復の対象外です

チェックポイント(CHECKPOINT)が取られる前のトランザクションは一旦すべてロールバック(ROLLBACK)されます

さらに、コミット(COMMIT)が発行されているトランザクションに対してはロールフォワード(ROLLFOWARD)で障害回復を行います

これがデータベースにおけるコミット(COMMIT)、チェックポイント(CHECKPOINT)、ロールバック(ROLLBACK)、UNDO、ロールフォワード(ROLLFOWARD)、REDOの関係です