以下是MongoDB在CentOS上的索引优化策略:
- 分析查询模式:使用
explain("executionStats")分析查询计划,识别未使用索引或低效查询。 - 创建高效索引
- 单字段索引:为高频单字段查询创建,如
db.collection.createIndex({ field: 1 })。 - 复合索引:按查询字段顺序创建,遵循“等值→排序→范围”(ESR)规则,如
db.collection.createIndex({ status: 1, orderDate: -1, amount: 1 })。 - 覆盖索引:包含查询所需所有字段,避免回表查询。
- 单字段索引:为高频单字段查询创建,如
- 优化索引维护
- 删除冗余索引:通过
db.collection.getIndexes()查看并删除未使用的索引。 - 定期重建索引:使用
reIndex()清理碎片,提升索引效率。
- 删除冗余索引:通过
- 硬件与配置优化
- 使用SSD存储索引文件,提升I/O性能。
- 调整WiredTiger缓存大小(
cacheSizeGB),建议设置为服务器内存的50%-70%。
- 高级策略
- 分片:对大集合按高基数字段(如用户ID)分片,分散查询负载。
- 部分索引:为满足特定条件的文档创建索引,减少索引大小。
- 监控与调优
- 启用慢查询日志(
operationProfiling.mode: slowOp),定位性能瓶颈。 - 使用MongoDB Atlas或第三方工具(如Prometheus)持续监控索引使用情况。
- 启用慢查询日志(
参考来源: