以下是优化Ubuntu上MongoDB存储的关键措施:
- 选择高效存储引擎
- 使用默认的WiredTiger引擎,支持文档级锁和压缩(如snappy/zlib),比MMAPv1更节省空间且性能更高。
- 调整内存配置
- 在
/etc/mongod.conf中设置storage.wiredTiger.engineConfig.cacheSizeGB为物理内存的50%-75%,确保足够缓存数据和索引。
- 在
- 优化磁盘与文件系统
- 使用SSD提升读写速度,避免HDD的性能瓶颈。
- 选择XFS文件系统,避免与WiredTiger的兼容性问题。
- 数据文件与压缩管理
- 启用WiredTiger压缩:
storage.wiredTiger.collectionConfig.blockCompressor: snappy(或zlib)。 - 定期运行
compact命令压缩集合空间,或通过db.repairDatabase()释放冗余空间(需在低峰期操作)。
- 启用WiredTiger压缩:
- 索引优化
- 为高频查询字段创建复合索引,避免全表扫描。
- 使用覆盖索引减少磁盘访问,或通过
projection限制返回字段。 - 定期清理冗余索引,避免占用额外存储。
- 分片与架构优化
- 对大数据集采用分片集群,按分片键水平拆分数据,减轻单节点压力。
- 配合副本集提升可用性,确保数据冗余。
- 监控与维护
- 使用
mongostat/mongotop监控存储和性能,或通过Prometheus+Grafana实现可视化分析。 - 定期备份数据(
mongodump/mongorestore),避免数据丢失。
- 使用
参考来源:[1,2,3,4,5,6,7,8,9,10]