Running Out of Log Space
[Transactions, Locking and Logging]

Collaboration diagram for Running Out of Log Space:


Detailed Description

Updates performed by transactions are logged so that the can be rolled back (in the event of a transaction abort) or restored (in the event of a crash). Both the old and new values of an updated location are logged. This allows a steal, no-force buffer management policy, which means the buffer manager is free to write dirty pages to disk at any time and yet does not have to write dirty pages for a a transaction to commit.

The log is stored in a set of Unix files, all in the same directory, whose path is determined by a run-time option. The maximum size of the log is also determined by a run-time option.o The proper value of the log size depends on the expected transaction mix. More specifically, it depends on the age of the oldest (longest running) transaction in the system and the amount of log space used by all active transactions. Here are some general rules to determine the amount of free log space available in the system.

Bug:
GNATS 142 There remain a number of places in the storage manager code that react to a lack of log space with a fatal error; this is a hold-over from the original storage manager, before any attempt to reserve space was in place. This code has to be rewritten to handle more gracefully such errors. In order for this to be done, the multi-threaded transaction support will be deprecated.
Checkpoints are taken periodically by the storage manager in order to free log space and shorten recovery time. Checkpoints are "fuzzy" and can do not require the system to pause while they are completing.

See the storage manager constructor ss_m::ss_m for more information about handling out-of-logspace conditions.


Classes

class  xct_t
 A transaction. Internal to the storage manager.

This class may be used in a limited way for the handling of out-of-log-space conditions. See Running Out of Log Space. More...


Generated on Wed Jul 7 17:22:38 2010 for Shore Storage Manager by  doxygen 1.4.7