Tihku is an work-in-progress, open-source implementation of the Hekaton multi-version concurrency control (MVCC) written in Rust. The project aims to provide a foundational building block for implementing database management systems.
One of the projects using Tihku is an experimental libSQL branch with MVCC that aims to implement BEGIN CONCURRENT
with Tihku improve SQLite write concurrency.
- Main memory architecture, rows are accessed via an index
- Optimistic multi-version concurrency control
- Rust and C APIs
Single-threaded micro-benchmarks
Operations | Throughput |
---|---|
begin_tx , read , and commit |
2.2M ops/second |
begin_tx , update , and commit |
2.2M ops/second |
read |
12.9M ops/second |
update |
6.2M ops/second |
(The cargo bench
was run on a AMD Ryzen 9 3900XT 2.2 GHz CPU.)
Run tests:
cargo test
Test coverage report:
cargo tarpaulin -o html
Run benchmarks:
cargo bench
Run benchmarks and generate flamegraphs:
echo -1 | sudo tee /proc/sys/kernel/perf_event_paranoid
cargo bench --bench my_benchmark -- --profile-time=5
Larson et al. High-Performance Concurrency Control Mechanisms for Main-Memory Databases. VLDB '11
Paper errata: The visibility check in Table 2 is wrong and causes uncommitted delete to become visible to transactions (fixed in commit 6ca3773).