Join GitHub today
FEAT: two-phase transactional aggregated heap operations #380
Two-phase transactional aggregated heap operations
Currently each TX_ALLOC performs an actual separate persistent memory allocation into the undo log vector. The first step of the allocation process is a volatile state reservation, followed by on average 5 cache flushes, 3 of which are related to the use of redo-log mechanism.
The proposal is to split the transactional allocation into two phases:
The reservation phase would create the redo log entries into a single big redo log, and the publish phase would process the redo log, creating the undo log vector. This would both significantly reduce the cost of transactional allocations (when performed in bulk) as well as shift that cost to later in the transaction.
Due to the fact that this might lead to spikes in performance, users will be able to configure how often does the publishing phase happens.
A CTL entry point that defines the frequency of publishing phase will be added: