Dmitry Kuzmenko, last update 31-03-2014
Number | Holds, ... | Moves forward, ... |
Oldest transaction | when transaction with this number was rolled back, and there were lot of data changes in it, or when client connection was lost | when automatic or manual sweep succeeds. |
Oldest Snapshot | when snapshot (or read committed write prior to IB 7.1) is active for a long time (it remembered oldest active snapshot as it's local OST) | when new transaction starts, if transaction holding OST is ended |
Oldest Active | when transaction with this number is active for a long time | when new transaction starts, if transaction holding OAT is ended |
Next | never | when new transaction starts |
Server version | When sweep run |
InterBase 7.x | (Oldest Active – Oldest) > Sweep interval |
InterBase 4.x, 5.x, 6.x, Firebird prior to 1.5.2, Yaffil | (Oldest Snapshot – Oldest) > Sweep interval |
Open !snapshot2.txt. :
Note that Oldest transaction is greater than Oldest snapshot. And Sweep gap has negative value. This can happen in two cases. First case is when there are some snapshot transactions start and commits one after another. I.e. this picture can happen with snapshots as well as previous picture. Next case happens only in servers other than IB 7.1/7.5 with ReadCommitted transactions (or in combination of ReadCommitted and Snapshot transactions). They can lock Oldest Snapshot number the same way as Snapshot transactions do. Current transaction state can be emulated with the following sequence
1. start transaction 1, snapshot or read_committed