MongoDB查询计划缓存方法

2025年3月17日 | 阅读 3 分钟

#1. db.collection.getPlanCache()

使用集合的计划缓存对象允许您访问此方法。我们需要使用db.collection.getPlanCache()方法来检索计划缓存对象。该方法返回一个已用于集合访问查询计划缓存的接口,并提供了一个查看和清除查询计划缓存的方法。

查询优化器可以缓存具有多个可实现计划的查询形状。

以下方法通过接口可用

PlanCache.help: 此方法可以通过指定集合的计划缓存对象访问,并显示指定集合的查询计划缓存的可用方法,即,db.collection.getPlanCache().help()。

PlanCache.listQueryShapes(): 此方法可以通过指定集合的计划缓存对象访问,并显示存在缓存查询计划的查询形状,即db.collection.getPlanCache().listQueryShapes()。

PlanCache.getPlansByQuery(): 此方法可以通过指定集合的计划缓存对象访问,并显示参数化查询形状的缓存查询计划,即db.collection.getPlanCache().getPlansByQuery()。

PlanCache.clearPlansByQuery(): 此方法可以通过特定集合的计划缓存对象访问,并清除参数化查询形状的缓存查询计划,即db.collection.getPlanCache().clearPlansByQuery()

PlanCache.clear(): 此方法可以通过特定集合的计划缓存对象访问,并清除集合的所有缓存查询计划,即db.collection.getPlanCache().clear()

MongoDB Query Plan Cache Methods

#2. PlanCache.clear()

clear方法仅可从计划缓存对象中使用,以删除指定集合的所有缓存查询计划。

例如 - 清除学生集合的缓存。


MongoDB Query Plan Cache Methods

#3. PlanCache.clearPlansByQuery()

此方法清除指定查询形状的缓存查询计划,并且可以从特定集合的计划缓存对象中使用;

PlanCache.clearPlansByQuery()方法接受以下参数

查询文档: 此参数是查询形状的查询谓词。谓词的结构和字段名称对于形状很重要,查询谓词中的值无关紧要。

投影文档: 它是可选参数,如果指定排序参数则需要。 它可以用于与查询形状关联的投影。

示例

如果一个订单集合具有以下查询形状

以下操作将删除为该形状缓存的查询计划

输出

MongoDB Query Plan Cache Methods

#4. PlanCache.help()

显示可用于查看和修改集合查询计划缓存的方法。 该方法仅可从特定集合的计划缓存对象中使用; 即

#5. PlanCache.listQueryShapes()

该方法已从4.2版本中弃用,用于显示缓存查询计划存在的查询形状。 如果您使用的是旧版本的MongoDB,则可以使用此方法。 所有查询形状都与查询哈希相关联,以帮助识别具有相同查询形状的慢查询。

语法

示例

order集合具有与查询形状相关联的缓存计划。 该方法将返回当前在缓存中的查询形状数组。


下一个主题用户管理方法