Measure Index Usage
获取具有 $indexStats
的索引访问信息
使用 $indexStats
聚合阶段获取有关集合的每个索引的使用的统计信息。
例如, 下面的聚合操作返回有关订单集合上的索引使用情况的统计信息:
db.explain.aggregate( [ { $indexStats: { } } ] )
结果:
/* 1 */
{
"name" : "c_1",
"key" : {
"c" : 1.0
},
"host" : "c120a2890d51:27017",
"accesses" : {
"ops" : NumberLong(0),
"since" : ISODate("2018-12-13T08:18:59.905Z")
}
}
/* 2 */
{
"name" : "a_1_b_1",
"key" : {
"a" : 1.0,
"b" : 1.0
},
"host" : "c120a2890d51:27017",
"accesses" : {
"ops" : NumberLong(0),
"since" : ISODate("2018-12-13T08:18:57.081Z")
}
}
/* 3 */
{
"name" : "_id_",
"key" : {
"_id" : 1
},
"host" : "c120a2890d51:27017",
"accesses" : {
"ops" : NumberLong(0),
"since" : ISODate("2018-12-13T07:38:02.493Z")
}
}
指定触发的索引
若要强制 mongodb 对 db.collection.find()
操作使用特定索引, 请使用hint() 方法指定索引。将hint() 方法追加到 find() 方法。
请考虑下面的示例:
db.people.find(
{ name: "John Doe", zipcode: { $gt: "63000" } }
).hint( { zipcode: 1 } ).explain("executionStats")
实例索引使用报告
mongodb 提供了许多索引使用和操作的指标, 您在分析数据库的索引使用时可能需要考虑这些指标:
服务器状态
-
metrics.queryExecutor.scanned
-
metrics.operation.scanAndOrder
表统计信息
-
totalIndexSize
-
indexSizes
数据库统计信息
-
dbStats.indexes
-
dbStats.indexSize