存储引擎概述
版本兼容性
| 组件 | 说明 |
|---|---|
| MongoDB版本 | 6.0 / 7.0 / 8.0 |
| 6.1+ journaling | 永久启用 |
| InMemory引擎 | 仅限企业版 |
| InMemory默认内存 | 50%×(RAM−1GB) |
验证引擎命令
// 查看当前引擎
db.serverStatus().storageEngine
// 查看WT cache
db.serverStatus().wiredTiger.cache['maximum bytes configured']
MongoDB支持的存储引擎类型
1. MMAPV1存储引擎
- MongoDB 4.2版本前默认存储引擎
- 采用内存映射文件机制
- 使用集合级锁
2. WiredTiger存储引擎
- MongoDB 3.2版本后的默认存储引擎
- 文档级并发控制
- 支持数据压缩和加密
- 采用MVCC机制
3. InMemory存储引擎
- 企业版专有功能
- 完全基于内存的存储解决方案
- 查询延迟极低(微秒级)
InMemory存储引擎
配置文件示例
storage:
engine: inMemory
dbPath: /var/lib/mongo
inMemory:
engineConfig:
inMemorySizeGB: 8
适用场景
- 实时分析系统
- 高速缓存层
- 会话存储
- 金融交易系统
WiredTiger存储引擎
配置文件示例
storage:
dbPath: /data/mongo
engine: wiredTiger
wiredTiger:
engineConfig:
cacheSizeGB: 2
directoryForIndexes: true
journalCompressor: snappy
实现原理
写请求流程
WiredTiger的写操作会默认写入Cache,并持久化到WAL,每60秒或者log达到2G做一次checkpoint。
Checkpoint机制
- 对所有table进行checkpoint
- 更新table的checkpoint元数据至WiredTiger.wt
- 将临时文件重命名
Journaling机制
在数据库宕机时,通过Write Ahead Logging向磁盘上的journal文件预先进行写入来保证持久性。