Freelist optimisations
Contains two main improvements:
- Setting minimum transaction ID to 1,000,000 (one million). This affects the logic of re-writing of records in
FREE_DBI
(freelists), so that there are enough transaction IDs to spread records evenly and ensure there is at most 1 overflow page per record. This avoid problems we saw before when re-writing of freelists leads to very slow commits - Allowing any writeable transaction to utilise free pages created by the previous writeable transaction. Previously, a writeable transaction could only utilise free pages created by pre-previous writeable transaction. That lead to unexpected effect of "double tap", whereas committing transaction allowed quicker recycling of free pages. Now such quicker recycling is possible without performing "double tap".