Loading...
Loading...
Overview of Experimental MVCC feature - snapshot isolation, versioning, limitations
npx skill4agent add tursodatabase/turso mvccPRAGMA journal_mode = 'experimental_mvcc';| Aspect | WAL | MVCC |
|---|---|---|
| Write granularity | Every commit writes full pages | Affected rows only |
| Readers/Writers | Don't block each other | Don't block each other |
| Persistence | | |
| Isolation | Snapshot (page-level) | Snapshot (row-level) |
beginendbtree_residentDatabase
└─ mv_store: MvStore
├─ rows: SkipMap<RowID, Vec<RowVersion>>
├─ txs: SkipMap<TxID, Transaction>
├─ Storage (.db-log file)
└─ CheckpointStateMachinemv_txMvStorecrossbeam_skiplistcore/mvcc/mod.rscore/mvcc/database/mod.rscore/mvcc/cursor.rscore/mvcc/persistent_storage/logical_log.rscore/mvcc/database/checkpoint_state_machine.rsPRAGMA mvcc_checkpoint_threshold = <pages>;# Run MVCC-specific tests
cargo test mvcc
# TCL tests with MVCC
make test-mvcc#[turso_macros::test(mvcc)]#[turso_macros::test(mvcc)]
fn test_something() {
// runs with MVCC enabled
}core/mvcc/mod.rs