MongoDB 查询计划缓存方法

MongoDB 查询计划缓存方法

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 查询计划缓存方法

PlanCache.clear()

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

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

db.student.getPlanCache().clear()

MongoDB 查询计划缓存方法

PlanCache.clearPlansByQuery()

此方法会清除指定查询形状的缓存查询计划,并从特定集合的计划缓存对象中提供; 即

db.collection.getPlanCache().clearPlansByQuery( <query>, <projection>, <sort> )

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

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

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

示例

如果一个集合 orders 具有以下查询形状:

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

输出:

MongoDB 查询计划缓存方法

PlanCache.help()

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

db.collection.getPlanCache().help()

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程