データベース技術において、ロールバックとはデータベースを以前の状態に戻す操作のことです。ロールバックは、誤った操作が行われた後でもデータベースをクリーンなコピーに復元できるため、データベースの整合性にとって重要です。 [1] ロールバックはデータベースサーバーのクラッシュからの回復に不可欠です。クラッシュ時にアクティブだったトランザクションをロールバックすることで、データベースは一貫した状態に復元されます。
ロールバック機能は通常、トランザクション ログを使用して実装されますが、マルチバージョン同時実行制御を使用して実装することもできます。
カスケードロールバック
カスケード ロールバックは、トランザクション (T1) が失敗し、ロールバックを実行する必要があるときに、データベース システムで発生します。T1 の失敗により、T1 のアクションに依存する他のトランザクションもロールバックする必要があり、カスケード効果が発生します。つまり、1 つのトランザクションの失敗により、多くのトランザクションが失敗します。
実用的なデータベース回復技術ではカスケードレス ロールバックが保証されるため、カスケード ロールバックは望ましい結果ではありません。カスケード ロールバックは DBA によってスケジュールされます。
構文
SQLは構造化照会言語の略で、データベースにアクセスし、更新し、操作するために使用される言語の一種です。SQL では、ROLLBACK最後の変更以降のすべてのデータ変更をリレーショナル データベース管理システム (RDBMS) によって破棄するコマンドでありSTART TRANSACTION、データBEGINの状態は変更が行われる前の状態に「ロールバック」されます。[2]
ステートメントは、使用中の可能性がある既存のセーブポイントROLLBACKも解放します。
ほとんどの SQL 方言では、ROLLBACKは接続に固有です。つまり、同じデータベースに 2 つの接続が確立された場合、1 つの接続で確立された接続は他の接続に影響を与えません。これは、適切な同時実行性をROLLBACK実現するために不可欠です。
データベース外での使用
ロールバックはデータベースに限定されません。ステートフルな 分散システムであれば、一貫性を維持するためにロールバック操作を使用できます。ロールバックをサポートできる分散システムの例としては、メッセージ キューやワークフロー管理システムなどがあります。より一般的には、別の操作または一連の操作の前にシステムを以前の状態にリセットする操作はすべて、ロールバックと見なすことができます。
参照
注記
- ^ 「データベースロールバック - 概要と理由」。2019年11月3日。 2022年4月16日閲覧。
- ^ Ben Richardson (2019年12月26日). 「Rollback SQL: ROLLBACK SQLクエリによるトランザクションのロールバック」 . 2022年4月16日閲覧。
参考文献
- Ramez Elmasri (2007)。データベースシステムの基礎。Pearson Addison Wesley。ISBN 978-0-321-36957-4。
- 「ROLLBACK トランザクション」、Microsoft SQL Server。
- 「Sql コマンド」、MySQL。
