📜  MongoDB查询计划缓存方法

📅  最后修改于: 2020-11-23 01:25:50             🧑  作者: Mango

MongoDB查询计划缓存方法

#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()

#2。 PlanCache.clear()

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

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

db.student.getPlanCache().clear()

#3。 PlanCache.clearPlansByQuery()

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

db.collection.getPlanCache().clearPlansByQuery( , ,  )

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

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

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

如果托收单具有以下查询形状:

{
  "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"
  }
]