Extend the transaction ID space beyond 2^32 transactions [CORE4965] #5256
Submitted by: @dyemanov
Relate to DNET896
Historically, transaction ID space was limited by 2^31 transactions (started since the database creation time). After that point, the database becomes unavailable until backup/restore is performed, which resets the transaction ID back to zero. Initial Firebird 3.0 version increased the transaction ID space to 2^32 transactions which doubles the database uptime without backup/restore.
This improvement request is about shifting that limit even further.
Firebird 3.0 RC1 introduces 48-bit internal transaction IDs that are publicly (via API and MON$ tables) represented as 64-bit numbers. This makes the new limit roughly equal to 2.8*10^14 transactions, later it could be extended up to the 2^63 limit. The implemented solution has no additional storage overhead until the transaction counters grow beyond the 2^32 boundary.
While being there, attachment IDs and statement IDs were changed to 64-bit numbers (both internally and externally).
====== Test Details ======
Database with Tx counters about 2.8*10^14 can not be prepared at reasonable time.
The text was updated successfully, but these errors were encountered:
Modified by: @pavel-zotov
status: Resolved [ 5 ] => Resolved [ 5 ]
QA Status: No test => Cannot be tested
Test Details: Database with Tx counters about 2.8*10^14 can not be prepared at reasonable time.