Shadow Paging
This recovery scheme does not require the use of a log in a single-user
environment. In a multiuser environment, a log may be needed for the
concurrency control method. Shadow paging considers the database to be made up
of a number of fixed-size disk pages (or disk blocks)—say, n—for recovery purposes. A directory
with n entries is constructed, where the ith entry points to the ith database page on disk. The directory
is kept in main memory if it is not too large, and all references—reads or
writes—to database pages on disk go through it. When a transaction begins
executing, the current directory—whose
entries point to the most recent or current database pages on disk—is copied
into a shadow directory. The shadow
directory is then saved on disk while the current directory is used by the
transaction.
During transaction execution, the shadow directory is never modified. When a write_item operation is performed, a new copy of the modified database page is
created, but the old copy of that page is not
overwritten. Instead, the new page is writ-ten elsewhere—on some previously
unused disk block. The current directory entry is modified to point to the new
disk block, whereas the shadow directory is not modified and continues to point
to the old unmodified disk block. Figure 23.4 illustrates the concepts of
shadow and current directories. For pages updated by the transaction, two
versions are kept. The old version is referenced by the shadow directory and
the new version by the current directory.
To recover from a failure during transaction execution, it is sufficient
to free the modified database pages and to discard the current directory. The
state of the data-base before transaction execution is available through the
shadow directory, and that state is recovered by reinstating the shadow
directory. The database thus is returned to its state prior to the transaction
that was executing when the crash occurred, and any modified pages are
discarded. Committing a transaction corresponds to discarding the previous
shadow directory. Since recovery involves neither undoing nor redoing data
items, this technique can be categorized as a NO-UNDO/NO-REDO technique
for recovery.
In a multiuser environment with concurrent transactions, logs and
checkpoints must be incorporated into the shadow paging technique. One
disadvantage of shadow paging is that the updated database pages change
location on disk. This makes it difficult to keep related database pages close
together on disk without complex storage management strategies. Furthermore, if
the directory is large, the overhead of writing shadow directories to disk as
transactions commit is significant. A further complication is how to handle garbage collection when a transaction
commits. The old pages referenced by the shadow directory that have been
updated must be released and added to a list of free pages for future use.
These pages are no longer needed after the transaction commits. Another issue
is that the operation to migrate between cur-rent and shadow directories must
be implemented as an atomic operation.
Related Topics
Privacy Policy, Terms and Conditions, DMCA Policy and Compliant
Copyright © 2018-2023 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.