MongoDB在Linux上的查询性能优化指南
一 查询与索引优化
db.users.createIndex({username: 1});多字段使用复合索引,顺序遵循等值在前、范围在后,如 db.users.createIndex({status: 1, age: -1})。尽量设计覆盖索引,让查询字段全部包含在索引中,避免回表。使用 explain("executionStats") 检查是否走索引、是否出现 COLLSCAN。{ name: 1, age: 1, _id: 0 };用 limit() 限制返回条数;大数据集分页建议基于范围条件(如基于 _id 或时间戳)而非 skip/limit 深翻页;避免在大文本上使用无锚点正则与代价高的 $or,必要时改写为可索引结构或并行查询。二 存储引擎与内存配置
storage.wiredTiger.engineConfig.cacheSizeGB,通常建议不超过物理内存的50%–60%,为操作系统与其他进程预留空间;确保 storage.dbPath 所在磁盘为SSD且剩余空间充足;为提升写入持久性与恢复能力,保持 journal 启用。三 Linux系统与内核参数
ulimit -n 100000),并相应调高内核 Max processes/files;为 MongoDB 绑定合适的 CPU 亲和性与 NUMA 策略以减少跨节点访问开销。四 架构扩展与读写策略
五 监控定位与维护
explain() 与 Database Profiler 定位问题查询与缺失索引。reIndex()),并审查索引使用,删除重复或不再使用的索引,减少写放大与存储占用。