Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space ML1 and version 9.1

...

Transaction Lifespan
xidTransaction start id. Marks the logical beginning of the transaction.
iidInvocation id. Marks the beginning of a statement within a transaction.
cid

Commit id. Marks the id at which transaction changes are visible to other transactions.

The following table describes MVCC visibility rules in different isolation levels. Note that ClustrixDB does not support the read uncommitted level.

Anchor
Isolation_Levels
Isolation_Levels
Isolation Levels

Each isolation level has a different set of visibility rules. The following table describes the basic rules for row visibility between transactions. 

...

ClustrixDB uses a globally unique ordered transaction id (xid) along with statement invocation id (iid) to control row visibility. Both the xid and iid generators use a combination of system wide clock and a unique node id to create a globally unique ordered identifier. 

Anchor
Version_History_and_Garbage_Collection
Version_History_and_Garbage_Collection
Version History and Garbage Collection 

ClustrixDB maintains version history through the undo log. Since the undo log must already maintain information about the previous version of the row for transaction rollback, we can rely on using this information to access previous versions of the row for MVCC. The technique allows ClustrixDB to maintain tables clustered by primary key instead of managing a large heap space. For inserts and updates, garbage collection occurs when we trim the undo log. However, ClustrixDB keeps enough undo log history to service currently executing transactions. In addition to limiting undo log trim to local checkpoint rules, we also limit trimming based on the id of the oldest transaction within the system. 

...