Algorithms for Recovery and Isolation Exploiting Semantics: Difference between revisions
Content deleted Content added
m →top: Remove blank line(s) between list items per WP:LISTGAP to fix an accessibility issue for users of screen readers. Do WP:GENFIXES and cleanup if needed. Discuss this at Wikipedia talk:WikiProject Accessibility#LISTGAP |
Link suggestions feature: 2 links added. |
||
(30 intermediate revisions by 27 users not shown) | |||
Line 1:
{{Short description|Recovery algorithm}}
In [[computer science]], '''Algorithms for Recovery and Isolation Exploiting Semantics''', or '''ARIES''', is a recovery [[algorithm]] designed to work with a [[no-force]], steal database approach; it is used by [[IBM
Three main principles lie behind ARIES:
* [[Write
*
*
== Logging ==
The ARIES algorithm relies on logging of all database operations with ascending Sequence Numbers. Usually the resulting logfile is stored on so-called "stable storage", that is a storage medium that is assumed to survive crashes and hardware failures.
The dirty page table keeps record of all the pages that have been modified, and not yet written
We create log records of the form (Sequence Number, Transaction ID, Page ID, Redo, Undo, Previous Sequence Number). The Redo and Undo fields keep information about the changes this log record saves and how to undo them. The Previous Sequence Number is a reference to the previous log record that was created for this transaction. In the case of an aborted transaction, it's possible to traverse the log file in reverse order using the Previous Sequence Numbers, undoing all actions taken within the specific transaction.
Every transaction implicitly begins with the first "Update" type of entry for the given
During a recovery, or while undoing the actions of an aborted transaction, a special kind of log record is written, the Compensation Log Record (CLR), to record that the action has already been undone. CLRs are of the form (Sequence Number, Transaction ID, Page ID, Redo, Previous Sequence Number, Next Undo Sequence Number). The
== Recovery ==
The recovery works in three phases. The first phase, Analysis, computes all the necessary information from the logfile. The Redo phase restores the database to the exact state at the crash, including all the changes of
=== Analysis ===
Line 30:
During the Analysis phase we restore the DPT and the TT as they were at the time of the crash.
We run through the logfile (from the beginning or the last checkpoint) and add all transactions for which we encounter Begin Transaction entries to the TT. Whenever an End Log entry is found, the corresponding transaction is removed. The last Sequence Number for each transaction is
During the same run we also fill the dirty page table by adding a new entry whenever we encounter a page that is modified and not yet in the DPT. This however only computes a superset of all dirty pages at the time of the crash, since we don't check the actual database file whether the page was written back to the storage.
Line 36:
=== Redo ===
From the DPT, we can compute the minimal Sequence Number of a dirty page. From there, we have to start redoing the actions until the crash, in case they weren't persisted already.
Running through the log file, we check for each entry, whether the modified page P on the entry exists in the DPT
=== Undo ===
After the Redo phase, the database reflects the exact state at the crash. However the changes of
For that we run backwards through the log for each transaction in the TT
The compensation log records make it possible to recover during a crash that occurs during the recovery phase. That isn't as uncommon as one might think, as it is possible for the recovery phase to take quite long. CLRs are read during the Analysis phase and redone during the Redo phase.
Line 50:
== Checkpoints ==
To avoid
The naive way for [[Application checkpointing|checkpointing]] involves locking the whole database to avoid changes to the DPT and the TT during the creation of the checkpoint. Fuzzy logging circumvents that by writing two log records. One Fuzzy Log Starts Here record and, after preparing the checkpoint data, the actual checkpoint. Between the two records other
== References ==
{{Reflist}}
==External links==
* {{citation |url=http://www.almaden.ibm.com/u/mohan/ARIES_Impact.html |title=Impact of ARIES Family of Locking and Recovery Algorithms - C. Mohan |archiveurl=
▲* {{citation |url=http://www.almaden.ibm.com/u/mohan/ARIES_Impact.html |title=Impact of ARIES Family of Locking and Recovery Algorithms - C. Mohan |archiveurl=http://web.archive.org/web/20120819161114/http://www.almaden.ibm.com/u/mohan/ARIES_Impact.html
|archivedate=2012-08-19
|accessdate=2013-09-18 }}
|