Database recovery is responsible for preserving the database consistency after a failure of any kind (transaction, system or media). Relevant information solely for recovery is saved in a log during normal transaction processing. To recover from a failure, basically two operations: undo and redo are applied with the help of the log on the last consistent state of the database. These two operations can be combined in four different ways to define four different types of recovery algorithms: “undo-redo,” “no undo-redo,” “undo-no redo” and “no undo-no redo.” Each of these algorithms manages log and updates to the database differently, which affect the overall performance and the availability of the database. To our knowledge, not much work has been done on the performance of recovery algorithms. There are only six reports available and these works have concentrated their studies on only a few algorithms. They have mainly used a queuing approach, which we believe is not adequate for a detailed performance study. In this paper we investigate the relative performance of these four algorithms through simulation. The purpose of conducting this study is first, to verify the findings of earlier works, and second, to obtain a detailed comparison of the behavior of all recovery algorithms. Our simulation studies show that in most cases, undo-redo and no undo-redo deliver similar but better recovery performance than undo-no redo and no undo-no redo. We observe that the recovery times increase with multiprogramming level, but generally decrease as the number of checkpoints increases. The undo-no redo algorithm results in a greater number of transaction rollbacks, which creates a larger transaction log, and thus longer recovery times. Its performance increases against undo-redo and no undo-redo as input/output performance improves. Slow input/output performance is also attributed to be the cause of the no undo-no redo algorithm's poor recovery performance.