RRENCY CONTROL AND RECOVERY IN DATABASE SYSTEMS

Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that the fast page of each copy bears this notice and the full citation including title and authors. To copy othenvise, to republish, to post on servers or to redistribute to lists, requires prior sp.ecific permission from the copyright owner. PREFACE The Subject For over 20 years, businesses have been moving their data processing activities on-line. Many businesses, such as airlines and banks, are no longer able to function when their on-line computer systems are down. Their on-line databases must be up-to-date and correct at all times. In part, the requirement for correctness and reliability is the burden of the application programming staff. They write the application programs that perform the business's basic functions: make a deposit or withdrawal, reserve a seat or purchase a ticket, buy or sell a security, etc. Each of these programs is designed and tested to perform its function correctly. However, even the most carefully implemented application program is vulnerable to certain errors that are beyond its control. These potential errors arise from two sources: concur-rency and failures. Multiprogramming is essential for attaining high performance. Its effect is to allow many programs to interleave their executions. That is, they execute concwrently. When such programs interleave their accesses to the database, they can interfere. Avoiding this interference is called the concurrency control problem. Computer systems are subject to many types of failures. Operating systems fail, as does the hardware on which they run. When a failure occurs, one or more application programs may be interrupted in midstream. Since the program was written to be correct only under the assumption that it executed in its entirety, an interrupted execution can lead to incorrect results. For example , a money transfer application may be interrupted by a failure after debiting. .. III iv PREFACE one account but before crediting the other. Avoiding such incorrect results due to failures is called the recocery problem. Systems that solve the concurrency control and recovery problems allow their users to assume that each of their programs executes atomically-as if no other programs were executing concurrently-and reliably-as if there were no failures. This abstraction of an atomic and reliable execution of a program is called a …