存储引擎概述

版本兼容性

组件说明
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

适用场景

  1. 实时分析系统
  2. 高速缓存层
  3. 会话存储
  4. 金融交易系统

WiredTiger存储引擎

配置文件示例

storage:
  dbPath: /data/mongo
  engine: wiredTiger
  wiredTiger:
    engineConfig:
      cacheSizeGB: 2
      directoryForIndexes: true
      journalCompressor: snappy

实现原理

写请求流程

WiredTiger的写操作会默认写入Cache,并持久化到WAL,每60秒或者log达到2G做一次checkpoint。

Checkpoint机制

  1. 对所有table进行checkpoint
  2. 更新table的checkpoint元数据至WiredTiger.wt
  3. 将临时文件重命名

Journaling机制

在数据库宕机时,通过Write Ahead Logging向磁盘上的journal文件预先进行写入来保证持久性。