Working with Storage Engines
1. Understanding WiredTiger Engine
| Feature | Detail |
|---|---|
| Default | Since 3.2 |
| Concurrency | Document-level locking |
| MVCC | Snapshot isolation per operation |
| Checkpoints | Every 60s by default |
2. Configuring WiredTiger Cache
| Setting | Default |
|---|---|
| cacheSizeGB | max(50% × (RAM − 1GB), 256MB) |
| Recommendation | Leave default unless dedicated host |
3. Using Compression Options
| Algorithm | Detail |
|---|---|
| snappy (default) | Balanced CPU / ratio |
| zlib | Higher ratio, more CPU |
| zstd 4.2+ | Best balance; default for journal in 6.0+ |
| none | Fastest, largest |
4. Configuring Journal Commits
| Setting | Default |
|---|---|
| commitIntervalMs | 100ms |
| j: true | Wait for journal sync |
5. Understanding Document-Level Locking
| Aspect | Detail |
|---|---|
| Granularity | Per-document write conflicts |
| Reads | Lockless under MVCC |
6. Using In-Memory Storage Engine
| Aspect | Detail |
|---|---|
| Edition | Enterprise |
| Persistence | None; data lost on restart |
| Use | Cache layer, ephemeral analytics |
7. Configuring Storage Engine Options
storage:
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 8
journalCompressor: zstd
collectionConfig:
blockCompressor: zstd
8. Monitoring Storage Metrics
| Source | Detail |
|---|---|
| dbStats / collStats | Sizes, counts, index sizes |
| wiredTiger.cache | Pages evicted, dirty bytes |
9. Understanding Checkpoints
| Aspect | Detail |
|---|---|
| Frequency | Every 60s or 2GB log |
| Effect | Persists snapshot to disk; recovery point |
10. Optimizing Storage Performance
| Practice | Detail |
|---|---|
| XFS over ext4 | Recommended FS |
| NVMe SSD | For low-latency workloads |
| Disable THP | Transparent Huge Pages off |
| Separate journal | On dedicated device for write-heavy |