Instant Recovery

Instant Recovery logo

The recovery component of a database system takes up the hard task of ensuring atomicity and durability of every modification made to a database (the "A" and "D" of ACID transactions).

While the system is running, the logging component keeps track of what happens with the data, collecting information necessary to undo and redo modifications.


When a failure occurs, recovery kicks in and restores the data to the most recent transactionally consistent state, based on the information it finds in the logs.


The problem we try to solve is that recovery is a painful process, which leaves the system unavailable for hours or even days. Our goal is to design simple algorithms that greatly improve the availability and robustness of the system, without noticeable impacts on runtime performance.

Open source repositories

Since October 2014, our research has moved into the Zero project, which is a fork of Shore-MT initially implemented at HP Labs. Our experiment code and the Shore-Kits framework are also being migrated into a new application called Zapps.

Our code for Single-Pass Restore (SPR), which was published on the BTW 2015 conference and based on Shore-MT, is currently available in BitBucket, in the following pages:



Caetano Sauer, Goetz Graefe and Theo Härder
Single-pass restore after a media failure
In: Proc. BTW, LNI 241, Hamburg, pp. 217-236
March 2015


Goetz Graefe, Wey Guy and Caetano Sauer
Instant Recovery with Write-Ahead Logging: Page Repair, System Restart, and Media Restore
Synthesis Lectures on Data Management
Morgan & Claypool Publishers, November 2014
Caetano Sauer and Theo Härder
A novel recovery mechanism enabling fine-granularity locking and fast, REDO-only recovery
September 2014
Vitor Uwe Reus
A study of I/O behavior in database systems
Master's Thesis, TU Kaiserslautern, September 2014
Caetano Sauer, Goetz Graefe and Theo Härder
An empirical analysis of database recovery costs
In: Proc. RDSS 2014 (SIGMOD Workshops), Snowbird, UT
June 2014
Previous | 1, 2 | Next
Export as: