Enterprise database systems store data related to many aspects of a business enterprise. Every transaction (where “transaction” refers to a set of operations) against the data stored in database causes a log record to be written into a transaction log. The log record typically describes the transaction and its effect on the data. The log records of the transaction log may therefore be used to recover from errors or to restore the database to a prior state.
Conventionally, a transaction log (both single host and distributed shared logs) is written by appending to end of the log. A large write to the log blocks readers which are attempting to scan log positions which have been written but which are beyond the log position of the ongoing large write.
FIG. 1 is a tabular representation of a transaction log including three streams. The transaction log supports atomic writes to log sequence numbers (LSNs), depicted as LSNs 0, 1, 2 and 3. As shown, the write to LSN 2 has not yet completed, even though the write to LSN 3 has completed. A reader is prevented from scanning past this “hole” at LSN 2, so as to ensure log consistency. Techniques for alleviating this problem, which is more likely to arise in the case of large writes, are therefore desired.