A recovery algorithm for a high-performance memory-resident database system

With memory prices dropping and memory sizes increasing accordingly, a number of researchers are addressing the problem of designing high-performance database systems for managing memory-resident data. In this paper we address the recovery problem in the context of such a system. We argue that existing database recovery schemes fall short of meeting the requirements of such a system, and we present a new recovery mechanism which is designed to overcome their shortcomings. The proposed mechanism takes advantage of a few megabytes of reliable memory in order to organize recovery information on a per “object” basis. As a result, it is able to amortize the cost of checkpoints over a controllable number of updates, and it is also able to separate post-crash recovery into two phases—high-speed recovery of data which is needed immediately by transactions, and background recovery of the remaining portions of the database. A simple performance analysis is undertaken, and the results suggest our mechanism should perform well in a high-performance, memory-resident database environment.

[1]  Jim Gray,et al.  Notes on Data Base Operating Systems , 1978, Advanced Course: Operating Systems.

[2]  Robert B. Hagmann A Crash Recovery Scheme for a Memory-Resident Database System , 1986, IEEE Transactions on Computers.

[3]  Irving L. Traiger,et al.  The Recovery Manager of the System R Database Manager , 1981, CSUR.

[4]  Rudolf Bayer,et al.  A database cache for high performance and fast restart in database systems , 1984, TODS.

[5]  Dieter Gawlick,et al.  One Thousand Transactions per Second , 1985, COMPCON.

[6]  Andreas Reuter,et al.  Principles of transaction-oriented database recovery , 1983, CSUR.

[7]  Michael J. Carey,et al.  Query processing in main memory database management systems , 1986, SIGMOD '86.

[8]  Leonard D. Shapiro,et al.  Join processing in database systems with large main memories , 1986, TODS.

[9]  Raymond A. Lorie,et al.  Physical integrity in a large segmented database , 1977, TODS.

[10]  Irving L. Traiger,et al.  The notions of consistency and predicate locks in a database system , 1976, CACM.

[11]  Andreas Reuter A Fast Transaction-Oriented Logging Scheme for Undo Ro overy , 1980, IEEE Transactions on Software Engineering.

[12]  Andreas Reuter,et al.  Performance analysis of recovery techniques , 1984, TODS.

[13]  Michael J. Carey,et al.  A Study of Index Structures for a Main Memory Database Management System , 1986, HPTS.

[14]  Walter H. Kohler,et al.  A Survey of Techniques for Synchronization and Recovery in Decentralized Computer Systems , 1981, CSUR.

[15]  Michael Stonebraker,et al.  Implementation techniques for main memory database systems , 1984, SIGMOD '84.