1. A method of querying a database during database recovery, the method comprising: reading a log file containing log file transactions to find incomplete transactions. comparing the log file transactions with transactions reflected in the database to find unentered transactions; inserting the unentered transactions into the database; asserting a first lock type on a data item associated with each incomplete transaction; removing a transaction reflected in the database if the transaction is not committed in the log file, wherein the removal of the transaction de-asserts a first lock type on a data item associated with the incomplete transaction; and permitting a snapshot query of the database concurrent with the removal of an incomplete transaction, wherein if a first lock type is detected on a first data item, the snapshot query is delayed until the first lock type is de-asserted.