centos mongodb索引使用策略

一、索引创建策略

  1. 按查询需求选择类型
    • 单字段索引:适用于高频单字段查询,如db.collection.createIndex({ field: 1 })
    • 复合索引:用于多字段组合查询,字段顺序按查询频率和选择性排序(高选择性字段在前),如db.collection.createIndex({ field1: 1, field2: -1 })
    • 覆盖索引:包含查询所需字段,避免回表查询,如db.collection.createIndex({ field1: 1, field2: 1 })
  2. 避免过度索引
    • 每个索引会增加写入开销和存储空间,删除冗余索引(通过db.collection.getIndexes()查看并删除未使用的索引)。

二、索引优化技巧

  1. 利用索引特性
    • 多键索引:自动为数组字段的每个元素创建索引,支持数组查询。
    • 地理空间索引:用于地理位置查询,如db.collection.createIndex({ location: "2dsphere" })
    • TTL索引:自动删除过期数据,如db.collection.createIndex({ createdAt: 1 }, { expireAfterSeconds: 3600 })
  2. 优化查询语句
    • 使用explain("executionStats")分析查询计划,确保索引被正确使用。
    • 通过hint()强制使用指定索引(谨慎使用,避免人为干预优化器)。

三、维护与监控

  1. 定期维护索引
    • 重建索引:使用reIndex()清理碎片,提升性能。
    • 监控索引使用率:通过MongoDB监控工具(如MongoDB Atlas、Ops Manager)查看索引命中率和慢查询。
  2. 硬件与配置优化
    • 使用SSD存储索引文件,提升I/O性能。
    • 调整WiredTiger缓存大小(cacheSizeGB参数),确保索引和数据可缓存。

四、高级策略

  1. 分片与复制集
    • 大数据集使用分片(Sharding)分散负载,提升查询吞吐量。
    • 配置复制集(Replica Set)保障数据高可用。
  2. 特殊场景索引
    • 文本索引:支持全文搜索,但性能较低,仅适用于小规模文本字段。
    • 哈希索引:用于分片键,确保数据均匀分布。

参考来源:[1,2,3,4,5,6,7,8,9,10,11]