在Ubuntu上优化MongoDB存储引擎可从以下方面入手:
- 选择存储引擎:默认使用WiredTiger,支持文档级锁和压缩,适合大多数场景;MMAPv1仅适用于读密集型应用。
- 配置WiredTiger参数:
- 缓存大小:设置为物理内存的50%-75%,通过
storage.wiredTiger.engineConfig.cacheSizeGB调整。
- 压缩算法:启用压缩(如Snappy)减少磁盘占用,通过
collectionConfig.blockCompressor设置。
- 日志优化:调整
journal.commitIntervalMs(默认100ms)平衡持久性和性能。
- 硬件与系统优化:
- 使用SSD提升读写速度,选择XFS文件系统避免兼容性问题。
- 确保足够内存,关闭不必要的系统服务以降低负载。
- 索引与查询优化:
- 为高频查询字段创建索引,避免全表扫描。
- 使用覆盖索引减少磁盘访问,通过
explain()分析查询计划。
- 分片与复制集:
- 大数据集采用分片水平扩展,通过
sh.shardCollection配置分片键。
- 部署副本集提高可用性和读取性能。
- 监控与维护:
- 使用
mongostat/mongotop监控性能,定期重建索引清理碎片。
配置修改后需重启MongoDB服务生效,建议先在测试环境验证。