MongoDB默认使用WiredTiger存储引擎(自3.2版本起),它支持文档级锁定、事务和高效的数据压缩(Snappy/Zlib),是生产环境的最佳选择。若应用为纯读密集型且无需事务,可考虑旧版MMAPv1,但WiredTiger的综合性能更优。
-m 0(不预留空间)、-E lazy_itable_init=0,lazy_journal_init=0(加速格式化)、-b 4096(4KB块大小,与MongoDB页面对齐);挂载时添加noatime,nodiratime(禁用访问时间记录,减少元数据写入)、barrier=0(若有电池备份的RAID控制器,提升写入性能)。-n size=64k(优化命名空间块大小,适合元数据操作)、-d agcount=16(增加分配组,提升并行写入);挂载时添加noatime,nodiratime,allocsize=512m(预分配大块空间,减少碎片)、logbufs=8(增加日志缓冲区,提升写入效率)。/etc/mongod.conf中的storage.wiredTiger.engineConfig.cacheSizeGB,设置为物理内存的50%-75%(如16GB内存可设为8GB),确保足够内存缓存数据和索引,减少磁盘I/O。journal(storage.journal.enabled: true)以保证数据持久性;定期检查日志文件大小,避免占用过多磁盘空间。storage.dbPath(如/var/lib/mongodb)指向有足够空间的分区,避免因磁盘空间不足导致数据库崩溃。storage.wiredTiger.engineConfig中设置compression: "snappy"(默认,平衡压缩率与性能)或"zlib"(更高压缩率,但会增加CPU负载),可减少数据文件大小约30%-50%。db.runCommand({compact: 'collection_name'})),释放未使用的空间(注意:此操作会阻塞集合写入,建议在低峰期执行)。db.collection.createIndex({field: 1})),避免过度索引(每个索引会占用额外存储空间)。db.collection.find({field: value}, {field: 1, _id: 0})),避免回表操作,减少磁盘读取。db.collection.reIndex()重建碎片化索引,删除不再使用的索引(通过db.collection.getIndexes()查看)。db.collection.createIndex({expireAt: 1}, {expireAfterSeconds: 0})自动删除过期文档,减少存储空间占用。mongostat(查看实时I/O)、mongotop(查看集合级读写时间)或第三方工具(如Percona PMM)监控存储性能,及时发现瓶颈。mongodump备份数据(存储到异地),避免数据丢失;备份文件可存储在单独的存储设备上,减少主存储的压力。