You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

副本集成员是否共享查询计划缓存?主备切换后新主能否访问旧主缓存?

MongoDB副本集查询计划缓存相关问题解答

副本集成员是否共享查询计划缓存?

答案是否——MongoDB副本集的每个成员都维护着自己独立的查询计划缓存,成员之间完全不会共享这个缓存。

之所以设计成这样,是因为每个节点的运行环境存在天然差异:

  • 不同节点的硬件配置可能不同(比如CPU核心数、内存大小);
  • 数据局部性有区别(比如从节点可能只加载了高频访问的数据到内存,索引的使用频率也和主节点不一致);
  • 每个节点的查询执行历史是独立的,只有当某个节点亲自执行过查询后,才会生成对应的查询计划并存入本地缓存。

主节点选举后,新主节点能否访问原主节点的查询计划缓存?

同样是不能。当原从节点晋升为新主节点时,它的查询计划缓存还是自己作为从节点期间生成的内容——原主节点的缓存不会同步到任何其他副本集成员。

如果新主节点从未执行过某条查询,那么它第一次处理该查询时,会从头走完查询计划的生成与选择流程:评估不同的执行方案、筛选出最优路径,之后才会把这个计划存入自己的本地缓存中。

如果想让新主节点快速获得某条查询的最优计划,你可以手动在新主节点上执行一次该查询,触发计划生成和缓存;或者通过planCacheListPlans命令查看原主节点的查询计划,再结合新主节点的实际情况验证后使用。


内容的提问来源于stack exchange,提问作者Sello Mkantjwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:55:40