温馨提示×

centos mongodb查询优化技巧

小樊
46
2025-08-26 17:15:02
栏目: 云计算

一、索引优化

  • 创建索引:为高频查询字段创建单字段索引,如db.collection.createIndex({field: 1})
  • 复合索引:多字段查询时使用复合索引,注意字段顺序(遵循ESR原则:等值匹配在前,排序居中,范围查询在后)。
  • 覆盖索引:设计索引包含查询所需字段,避免回表查询。
  • 索引维护:定期用compact命令优化索引,删除冗余索引。

二、查询语句优化

  • 使用投影:通过projection限制返回字段,减少数据传输量,如db.collection.find({}, {field1: 1, field2: 1})
  • 分页查询:用limit()skip()分页,避免一次性返回大量数据。
  • 避免全表扫描:确保查询条件能利用索引,避免使用$where、正则表达式等可能导致全表扫描的操作符。
  • 分析查询计划:用explain("executionStats")查看索引使用情况,优化低效查询。

三、硬件与配置优化

  • 硬件升级:使用SSD硬盘提升I/O性能,增加内存以容纳更多数据和索引。
  • 配置参数调整:在/etc/mongod.conf中优化wiredTiger.engineConfig.cacheSizeGB(建议设置为服务器内存的50%-70%)。

四、架构优化

  • 分片(Sharding):对大数据集按分片键水平拆分,分散查询压力。
  • 副本集(Replica Set):配置副本集实现读写分离,提升读取性能。

五、监控与维护

  • 监控工具:使用mongostatmongotop或第三方工具(如PMM)监控性能。
  • 慢查询分析:开启慢查询日志,定期优化慢查询语句。

0