works
价值)并存储为占位符条目,但查询形状不用于生成查询计划。 对于查询,如果形状的缓存条目状态非活动: 1.对候选计划进行评估并选出一个获胜的计划。 2.所选计划的工作值与非活动条目的工作值进行比较。如果所选计划的works值为:小于或等于非活动条目的, 所选计划将替换占位符“不 活动”条目,并具有“ 活动”状态。 如果在替换发生之前,“ 非活动”条目变为“ 活动”(例如,由于其他查询操作),则仅当新活动条目的works
值大于所选计划时,才会替换该新活动条目。 大于非活动条目的数量, 不活动的条目仍然存在,但其工作值增加。[success] 注意与任何hash函数一样,两个不同的查询形状可能会导致相同的hash值。但是,不同查询形状之间不会发生哈希冲突。
planCacheKey
是与查询关联的计划缓存条目的键的hash值。[success] 注意与queryHash不同,planCacheKey是查询形状和当前可用的形状索引的函数。也就是说,如果添加/删除了支持查询形状的索引,planCacheKey值可能会改变,而queryHash值不会改变。
hint()
。要查看MongoDB是否为查询形状应用了索引筛选器,请检查db.collection.explain()
或cursor.explain()
方法的indexFilterSet
字段。