In the field of databases in computer
science, a transaction log is a history of actions executed by a database
management system to guarantee ACID properties over crashes or hardware
failures. Physically, a log is a file listing changes to the database, stored
in a stable storage format. If, after a start, the database is found
in an inconsistent state or not been shut down properly, the database
management system reviews the database logs for uncommitted transactions and
rolls back the changes made by these transactions. Additionally, all
transactions that are already committed but whose changes were not yet
materialized in the database are re-applied. Both are done to ensure
atomicity and durability of transactions.
This term is not to be confused with other, human-readable logs that a
database management system usually provides.
In computer storage, a journal is a chronological record of data processing
operations that may be used to construct or reinstate an historical or
alternative version of a computer system or computer file.
In database management systems, a journal is the record of data altered by
a given process. Anatomy of a general database log
A database log record is made up of: Log Sequence Number: A unique id for a
log record. With LSNs, logs can be recovered in constant time. Most LSNs
are assigned in monotonically increasing order, which is useful in recovery
algorithms, like ARIES. Prev LSN: A link to their last log
record. This implies database logs are constructed in linked list form.
Transaction ID number: A reference to the database transaction generating the
log record. Type: Describes the type of database log
record. Information about the actual changes
that triggered the log record to be written.
Types of database log records All log records include the general log
attributes above, and also other attributes depending on their type.
Update Log Record notes an update to the database. It includes this extra
information: PageID: A reference to the Page ID of
the modified page. Length and Offset: Length in bytes and
offset of the page are usually included. Before and After Images: Includes the
value of the bytes of page before and after the page change. Some databases
may have logs which include one or both images.
Compensation Log Record notes the rollback of a particular change to the
database. Each correspond with exactly one other Update Log Record. It includes
this extra information: undoNextLSN: This field contains the LSN
of the next log record that is to be undone for transaction that wrote the
last Update Log. Commit Record notes a decision to commit
a transaction. Abort Record notes a decision to abort
and hence roll back a transaction. Checkpoint Record notes that a
checkpoint has been made. These are used to speed up recovery. They record
information that eliminates the need to read a long way into the log’s past.
This varies according to checkpoint algorithm. If all dirty pages are
flushed while creating the checkpoint, it might contain:
redoLSN: This is a reference to the first log record that corresponds to a
dirty page. i.e. the first update that wasn’t flushed at checkpoint time. This
is where redo must begin on recovery. undoLSN: This is a reference to the
oldest log record of the oldest in-progress transaction. This is the
oldest log record needed to undo all in-progress transactions.
Completion Record notes that all work has been done for this particular
These tables are maintained in memory, and can be efficiently reconstructed
from the log and the database: Transaction Table: The table contains
one entry for each active transaction. This includes Transaction ID and
lastLSN, where lastLSN describes the LSN of the most recent log record for the
transaction. Dirty Page Table: The table contains one
entry for each dirty page that hasn’t been written to disk. The entry contains
recLSN, where recLSN is the LSN of the first log record that caused the page to
be dirty. Transaction Log: A DBMS uses a
transaction log to keep track of all transactions that updates the database.
The information stored in this log is used by DBMS for a recovery requirement
triggered by ‘Roll Back’ statement. See also
Data logging Error correction and detection
Hash function Journaling file system
Log-structured file system Write-ahead logging
Sources Federal Standard 1037C