Loading...
Loading...
Compare original and translation side by side
PRAGMA journal_mode = 'experimental_mvcc';PRAGMA 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) |
| 方面 | WAL | MVCC |
|---|---|---|
| 写入粒度 | 每次提交写入完整页面 | 仅写入受影响的行 |
| 读写阻塞 | 互不阻塞 | 互不阻塞 |
| 持久化文件 | | |
| 隔离级别 | 快照(页面级) | 快照(行级) |
beginendbtree_residentbeginendbtree_residentDatabase
└─ mv_store: MvStore
├─ rows: SkipMap<RowID, Vec<RowVersion>>
├─ txs: SkipMap<TxID, Transaction>
├─ Storage (.db-log file)
└─ CheckpointStateMachinemv_txMvStorecrossbeam_skiplistDatabase
└─ 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.rscore/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>;PRAGMA mvcc_checkpoint_threshold = <pages>;undefinedundefined
Use `#[turso_macros::test(mvcc)]` attribute for MVCC-enabled tests.
```rust
#[turso_macros::test(mvcc)]
fn test_something() {
// runs with MVCC enabled
}
使用`#[turso_macros::test(mvcc)]`属性来启用MVCC测试。
```rust
#[turso_macros::test(mvcc)]
fn test_something() {
// runs with MVCC enabled
}core/mvcc/mod.rscore/mvcc/mod.rs