planCacheClear
定义
planCacheClear
移除集合的缓存查询计划。指定一个计划缓存查询形状以移除该形状的缓存查询计划。省略计划缓存查询形状以清除所有缓存查询计划。
提示
在
mongosh
中,此命令也可以通过PlanCache.clear()
和PlanCache.clearPlansByQuery()
辅助方法执行.辅助方法对
mongosh
用户来说很方便,但它们可能不会返回与数据库命令相同级别的信息。在不需要便利性或需要额外返回字段的情况下,请使用数据库命令。
查询设置
从MongoDB 8.0开始,使用查询设置代替添加索引过滤器。从MongoDB 8.0开始,索引过滤器已被弃用。
查询设置比索引过滤器具有更多功能。此外,索引过滤器不持久,并且您不能轻松地为所有集群节点创建索引过滤器。要添加查询设置并查看示例,请参阅setQuerySettings
。
兼容性
此命令在以下环境中托管的部署中可用
MongoDB Atlas:云中MongoDB部署的全托管服务
重要
此命令不支持M0、M2和M5集群。有关更多信息,请参阅不受支持的命令。
MongoDB企业版:基于订阅的自托管MongoDB版本
MongoDB社区版:源代码可用的免费使用、自托管MongoDB版本
语法
该命令具有以下语法
db.runCommand( { planCacheClear: <collection>, query: <query>, sort: <sort>, projection: <projection>, comment: <any> } )
命令字段
该命令接受以下可选字段
字段 | 类型 | 描述 |
---|---|---|
query | document | 可选。计划缓存查询形状的查询谓词。仅谓词的结构,包括字段名称,对形状是重要的;查询谓词中的值是不重要的。 |
projection | document | 可选。与计划缓存查询形状关联的投影。 |
sort | document | 可选。与计划缓存查询形状关联的排序。 |
comment | any | 可选。附加到此命令的用户提供的注释。一旦设置,此注释将显示在以下位置的此命令记录旁边
注释可以是任何有效的 BSON 类型(字符串、整数、对象、数组等)。 |
要查看存在缓存的查询计划形状的查询形状,请参阅 示例。
所需访问权限
在运行 授权 的系统上,用户必须具有包括 planCacheWrite 操作的访问权限。
示例
清除特定查询形状的缓存计划
如果名为 orders
的集合具有以下计划缓存查询形状
{ "query" : { "qty" : { "$gt" : 10 } }, "sort" : { "ord_date" : 1 }, "projection" : { }, "planCacheShapeHash" : "9AAD95BE" }
警告
从 MongoDB 8.0 开始,现有的 queryHash
字段重命名为 planCacheShapeHash
。如果您使用的是较早版本的 MongoDB,您将看到 queryHash
而不是 planCacheShapeHash
。
以下操作清除该形状缓存的查询计划
db.runCommand( { planCacheClear: "orders", query: { "qty" : { "$gt" : 10 } }, sort: { "ord_date" : 1 } } )
清除集合的所有缓存计划
以下示例清除 orders
集合的所有缓存查询计划
db.runCommand( { planCacheClear: "orders" } )