LeanStore is a larger-than-memory database, optimized for NVMe SSD and multi-core CPU, achieves performance close to in-memory systems without having to keep all data in memory.
Currently, LeanStore uses GSN-related dependency tracking, which causes many unnecessary transaction commit waits especially in read-write mixed workloads like YCSB workload A and B.
System transaction:
Triggered by the storage engine, operations like btree split and merge are all executed as system transactions. They do not change the data written by user transactions, only impact the physical representation.
Execution effects are immediately visible to all other user and system transactions.
Only one transaction timestamp is needed, drawn from another global atomic counter other than user transactions.
Commit condition for user transactions whose isolation level is higher than read committed:
dependent system transactions: track the maximum system transaction ID it has witnessed while reading pages. Each page stores the maximum system transaction that had written on it.
dependent user transactions: same as the current implementation
Enhancement
Currently, LeanStore uses GSN-related dependency tracking, which causes many unnecessary transaction commit waits especially in read-write mixed workloads like YCSB workload A and B.
System transaction:
Commit condition for user transactions whose isolation level is higher than read committed: