MongoDB PlanCache方法
MongoDB查询计划缓存方法
#1、 db.collection.getPlanCache()
使用集合的计划缓存对象可以访问此方法。我们需要使用db.collection.getPlanCache()方法来检索计划缓存对象。该方法返回一个已用于收集的接口,以访问查询计划缓存,并提供了一种查看和清除查询计划缓存的方法。
查询形状可以由具有更多功能的查询优化器缓存。
以下方法可通过该界面使用:
PlanCache.help: 通过指定集合的计划缓存对象,显示可用于指定集合的查询计划缓存的方法
,即db.collection.getPlanCache()。help()。
PlanCache.listQueryShapes(): 可通过指定集合的计划缓存对象访问此方法,并显示存在缓存查询计划的查询形状,即
ie db.collection.getPlanCache()。listQueryShapes()。
PlanCache.getPlansByQuery(): 可通过指定集合的计划缓存对象访问此方法,并显示用于带参数的查询形状的缓存查询计划。
ie db.collection.getPlanCache()。getPlansByQuery()。
PlanCache.clearPlansByQuery(): 可通过特定集合的计划缓存对象访问此方法,清除用于带参数的查询形状的缓存查询计划。
ie db.collection.getPlanCache()。clearPlansByQuery()
PlanCache.clear(): 可通过特定集合的计划缓存对象访问此方法并清除集合的所有已缓存查询计划。
ie db.collection.getPlanCache()。clear()
#2、 PlanCache.clear()
仅可从计划缓存的对象中使用clear方法来删除指定集合的所有缓存的查询计划。
例如-清除学生集合的缓存。
db.student.getPlanCache().clear()
#3、 PlanCache.clearPlansByQuery()
此方法清除指定查询形状的缓存查询计划,并且可以从特定集合的计划缓存对象中获取该计划;
即
db.collection.getPlanCache().clearPlansByQuery( <query>, <projection>, <sort> )
PlanCache.clearPlansByQuery()方法接受以下参数:
Query document: 此参数是查询形状的查询谓词。谓词的结构和字段名称对形状很重要,查询谓词中的值并不重要。
Projection document: 这是可选参数,如果指定,则为必需排序参数。
示例
如果收款单具有以下查询形状:
{
"query" : { "qty" : { "$gt" : 10 } },
"sort" : { "ord_date" : 1 },
"projection" : { },
"queryHash" : "9AAD95BE" // Available starting in MongoDB 4.2
}
以下操作将删除为形状缓存的查询计划:
db.orders.getPlanCache().clearPlansByQuery(
{ "qty" : { "$gt" : 10 } },
{ },
{ "ord_date" : 1 }
)
输出:
#4、 PlanCache.help()
显示可用于查看和修改集合的查询计划缓存的方法。该方法仅可从特定集合的计划缓存对象中使用。即
db.collection.getPlanCache().help()
#5、 PlanCache.listQueryShapes()
该方法从版本4.2开始弃用,并用于显示存在缓存的查询计划的查询形状。如果使用的是MongoDB的旧版本,则可以使用此方法。所有查询形状都与查询哈希相关联,以帮助识别具有相同查询形状的慢查询。
语法:
db.collection.getPlanCache().listQueryShapes()
示例:
db.orders.getPlanCache().listQueryShapes()
订单集合具有与查询形状关联的现金计划。该方法将返回当前位于缓存内的查询形状数组。
[
{
"query" : { "qty" : { "$gt" : 10 } },
"sort" : { "ord_date" : 1 },
"projection" : { },
"queryHash" : "9AAD95BE"
{
"query" : { "$or" :
[
{ "qty" : { "$gt" : 15 }, "item" : "xyz123" },
{ "status" : "A" }
]
},
"sort" : { },
"projection" : { },
"queryHash" : "0A087AD0"
},
{
"query" : { "$or" : [ { "qty" : { "$gt" : 15 } }, { "status" : "A" } ] },
"sort" : { },
"projection" : { },
"queryHash" : "DA43B020"
}
]