Shadow paging is a technique used to achieve atomic and durable
transactions, and provides the ability to manipulate pages in a database.
During a transaction, the pages affected by the transaction are copied
from the database file into a workspace, such as volatile memory, and
modified in that workspace. When a transaction is committed, all of the
pages that were modified by the transaction are written from the
workspace to unused pages in the database file. During execution of the
transaction, the state of the database exposed to the user is that in
which the database existed prior to the transaction, since the database
file still contains the original versions of the modified pages, as they
existed before being copied into the workspace. If a user accesses the
database before the transaction is complete, or upon recovery of a
failure, it will appear as though the transaction has not occurred.