シャドウページング【shadow paging】
概要
シャドウページングとは、データベースシステムにおけるトランザクション管理の手法の一つで、更新前のページをそのまま保持しながら変更後のデータを別領域に書き込むことで、障害発生時の回復を可能にする仕組みである。

データベース管理システムのストレージ管理では、記憶領域を数KB程度の固定長の「ページ」(page)という単位に分割し、データベース上のテーブルや索引などの保存内容と記録先のページの位置を対応付けた「ページテーブル」を作成して管理する。
シャドウページングでは、データの更新時に記録先のページを直接上書きせず、変更後の内容を新しい空きページに書き込み、それを指す新しいページテーブルを別に用意する。元のページテーブルはそのまま残され、これを「シャドウページテーブル」(shadow:影)という。
トランザクションが正常に完了(コミット)すると、古いシャドウページテーブルが破棄され新しい状態が正式なものとなる。一方、障害が発生してトランザクションが中断した場合は、作成途上の新しいページ群とページテーブルを破棄してシャドウページテーブルを現行状態とすることで、更新開始前の状態に即座に戻すことができる。
シャドウページングの利点は、ログを用いた回復方式と比較してロールバックが単純かつ高速な点である。更新前の状態がシャドウとして常に保持されているため、大量のログを再処理する必要がない。一方、更新の度に新しいページ領域を確保するためストレージの断片化が生じやすく、複数テーブルにまたがるトランザクション管理が複雑になるという難点がある。現代の大規模RDBMSではログベースの方式が主流となっており、シャドウページングは一部の組み込みデータベースや研究用途で見られる手法となっている。