limbo/core/mvcc
2023-05-09 10:43:42 +03:00
..
.github/workflows simplify CI 2023-04-14 10:46:08 +02:00
bindings/c Silence clippy 2023-05-09 10:43:42 +03:00
database Move C bindings to separate crate 2023-05-09 10:34:11 +03:00
figures Document persistent storage design (#24) 2023-05-06 20:15:08 +02:00
.gitignore Add mvcc.h to the tree 2023-05-09 10:41:33 +03:00
Cargo.toml Move C bindings to separate crate 2023-05-09 10:34:11 +03:00
DESIGN.md Document persistent storage design (#24) 2023-05-06 20:15:08 +02:00
LICENSE.md Initial commit 2023-04-08 15:14:05 +03:00
README.md Update README.md 2023-05-09 10:42:05 +03:00

MVCC for Rust

This is a work-in-progress the Hekaton optimistic multiversion concurrency control library in Rust. The aim of the project is to provide a building block for implementing database management systems.

Features

  • Main memory architecture, rows are accessed via an index
  • Optimistic multi-version concurrency control
  • Rust and C APIs

Experimental Evaluation

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.)

Development

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

References

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).