MVCC (Multi-Version Concurrency Control)
MVCC (Multi-Version Concurrency Control)
Multi-Version Concurrency Control allows multiple transactions to access the same data simultaneously without blocking each other. Each transaction sees a consistent snapshot of the database at a specific point in time.
Overview
HeliosDB implements PostgreSQL-compatible MVCC with Serializable Snapshot Isolation (SSI). Key capabilities:
- Isolation without locking: Readers don’t block writers and vice versa
- Snapshot consistency: Each transaction sees a consistent view of the database
- Conflict detection: Automatic detection of write-write and read-write conflicts
- PostgreSQL compatibility: Same isolation levels and behavior
Quick Start
1. Basic Transaction Usage
-- Start transaction (uses default isolation level)BEGIN; SELECT * FROM accounts WHERE id = 1; UPDATE accounts SET balance = balance - 100 WHERE id = 1;COMMIT;2. Isolation Levels
-- READ COMMITTED (default) - Best performanceBEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED;
-- REPEATABLE READ - Consistent snapshotsBEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SERIALIZABLE - Strictest, detects conflictsBEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;3. Serializable Conflict Detection
-- Transaction 1BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;UPDATE accounts SET balance = balance + 50 WHERE id = 1;-- Don't commit yet...
-- Transaction 2 (concurrent)BEGIN TRANSACTION ISOLATION LEVEL SERIALIZABLE;UPDATE accounts SET balance = balance - 30 WHERE id = 1;COMMIT; -- Succeeds (first committer wins)
-- Transaction 1 continuesCOMMIT; -- Fails with serialization_failureWhen to Use MVCC
| Use Case | Recommended Isolation |
|---|---|
| High-concurrency applications | READ COMMITTED |
| Long-running reports | REPEATABLE READ |
| Financial transactions | SERIALIZABLE |
| Inventory management | SERIALIZABLE |
| Analytics queries | READ COMMITTED |
| Batch data exports | REPEATABLE READ |
Performance Characteristics
| Isolation Level | Overhead | Use When |
|---|---|---|
| READ COMMITTED | ~0% | High throughput needed |
| REPEATABLE READ | <1% | Consistent reads required |
| SERIALIZABLE | 2-5% | Strict consistency critical |
Maintenance
-- Clean up old row versionsVACUUM ANALYZE;
-- Monitor version chainsSELECT relname, n_live_tup, n_dead_tupFROM pg_stat_user_tables;Documentation
| Document | Description |
|---|---|
| MVCC_CONFIGURATION_GUIDE.md | Detailed configuration and setup |
| Quick Start | Fast getting started guide |
| Deadlock Prevention | Handling deadlocks |
Related Features
- Transactions:
/docs/features/transactions/ - Distributed Transactions: Two-phase commit across nodes
- Deadlock Detection: Automatic deadlock resolution
Implementation Details
For historical implementation documentation (development team reference only):
/docs/archive/historical/implementation-phases/mvcc/
Status: Production Ready Version: v7.0