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
这个页面对您有帮助吗?
有用
有用
无用
无用