以下是CentOS上优化MongoDB索引的建议:
- 分析查询模式:用
explain("executionStats")分析查询计划,确认索引使用情况。
- 创建合适索引
- 单字段索引:高频单字段查询。
- 复合索引:多字段组合查询,遵循“最左前缀原则”,将高频/选择性高的字段放前面。
- 覆盖索引:包含查询所需字段,避免回表。
- 删除冗余索引:用
getIndexes()查看并删除未使用的索引,减少资源占用。
- 索引维护
- 定期重建索引:用
reIndex()消除碎片,提升性能。
- 后台创建索引:避免阻塞业务,使用
{background: true}参数。
- 硬件与配置优化
- 增加内存:缓存更多索引和数据。
- 使用SSD:提升I/O性能。
- 分片与高级策略
- 大数据集分片:按分片键均匀分布数据,避免热点。
- 选择合适索引类型:如文本索引用于全文搜索,地理空间索引用于位置查询。
- 监控与调优
- 开启慢查询监控:通过
operationProfiling或工具(如mongostat)定位性能瓶颈。
- 避免全表扫描:确保查询能利用索引,减少
$where等低效操作。
参考来源: