Transaction ID wraparound
Transaction ID wraparound is the reuse of low counter values after a finite transaction identifier passes the end of its numeric range.
Normal 32-bit transaction identifiers use modular ordering. Without limiting the age of retained row versions, an old insertion identifier can eventually appear to be in the future. Freezing preserves old committed rows without relying on their original identifier's normal ordering. [1]
An epoch distinguishes successive cycles when retained with the low identifier. A 64-bit full identifier contains both components, while its 32-bit form loses the epoch. Identifier assignment order need not match transaction-start order. [2]
The same low number alone cannot distinguish generations from different cycles. Comparing counters after restore also requires a trustworthy identity and history. [3]