以下是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緩存大?。?code>cacheSizeGB),建議設置為服務器內存的50%-70%。
- 高級策略
- 分片:對大集合按高基數字段(如用戶ID)分片,分散查詢負載。
- 部分索引:為滿足特定條件的文檔創建索引,減少索引大小。
- 監控與調優
- 啟用慢查詢日志(
operationProfiling.mode: slowOp
),定位性能瓶頸。
- 使用MongoDB Atlas或第三方工具(如Prometheus)持續監控索引使用情況。
參考來源: