You need to enable JavaScript to run this app.
文档中心
文档数据库 MongoDB 版

文档数据库 MongoDB 版

复制全文
下载 pdf
报错和异常
为什么有时实例并没有选择最优索引?
复制全文
下载 pdf
为什么有时实例并没有选择最优索引?
问题现象
MongoDB 实例的 PlanCache 中存在最高效的查询索引,但在执行查询时并未选择该最优索引,导致扫描行数过多,出现大量慢查询,占用大量 CPU 内存资源,影响数据库性能。
受影响的实例
MongoDB 4.0 实例。
原因
MongoDB 4.0 版本的已知问题。关于该问题的更多详情,请参见 jira.mongodb.orgn extremely high 'works' value is cached
处理方法
  • 短期处理方法
  • 通过 PlanCache.clear() 命令清除实例的查询缓存。关于 PlanCache.clear() 命令的更多详情,请参见 PlanCache.clear()
  • 长期处理方法
  • 您可以根据实际业务的查询需求进行具体分析和改进,确保设置了最适合的查询策略。如下具体改进方法供您参考:
  • 通过 cursor.hint() 命令对常用查询显式指定 hint 来选择该查询的最优执行计划。关于 cursor.hint() 命令的更多详情,请参见 cursor.hint()
  • 通过 planCacheSetFilter 参数设置查询计划缓存索引过滤器,直接为常用查询选择最优查询计划来覆盖默认查询计划。关于 planCacheSetFilter 的更多详情,请参见 planCacheSetFilter
最近更新时间:2026.01.04 20:19:28
这个页面对您有帮助吗?
有用
有用
无用
无用