Skeena enables consistent ACID cross-engine transactions over two database engines (e.g., storage-centric InnoDB and memory-optimized ERMIA, both in MySQL) without intrusive changes to individual engines.
This repository implements Skeena. See details in our SIGMOD 2022 paper below. If you use our work, please cite:
Skeena: Efficient and Consistent Cross-Engine Transactions.
Jianqiu Zhang, Kaisong Huang, Tianzheng Wang and King Lv.
ACM SIGMOD/PODS International Conference on Management of Data 2022
The implementation integrates the ERMIA (SIGMOD 2016) main-memory database engine into MySQL alongside with its default InnoDB engine to enable cross-engine transactions.
- mysql/ - modified MySQL to support ERMIA and Skeena
- mysql/storage/innobase/trx/trx0trx.cc - modified InnoDB transaction code for snapshot selection
- mysql/sql/gtt.{h,cc} - core Skeena implementation
- Follow sample instructions in ermia/README.md
- Follow sample instructions under mysql/ermia-contrib/BUILD
- MySQL settings: follow the mysql/ermia-contrib/my.cnf file and put it in your ~/.my.cnf
- Useful variables in my.cnf:
- ermia-ermia-log-dir: Path to the ERMIA engine log dir
- ermia-gtt-recycle-capacity: The size of each GTT(CSR) Tree
- ermia-gtt-recycle-threshold: The threshold to trigger the recycle
- To start MySQL Server:
./build/bin/mysqld
- All scripts are stored under mysql/ermia-contrib
- Microbenchmark: see the mysql/ermia-contrib/skeena-benchrunner folder
- TPC-C: see ermia-contrib/tpcc/README and check the scripts there