如何查找MongoDB索引统计信息


Answers:


9

您可以从db.serverStatus()命令中获取整体(实例范围内)的匹配信息,尤其是:

http://docs.mongodb.org/manual/reference/command/serverStatus/#serverStatus.indexCounters.hits http://docs.mongodb.org/manual/reference/command/serverStatus/#serverStatus.indexCounters.misses

这些数字是在整个过程的生命周期中可见的总数,因此,如果您想获得一个比率或查看一段时间内的趋势,则需要定期记录它们并相应地比较这些值。值得庆幸的是,如果您安装了MMS Monitoring,它将为您完成并绘制结果图表。

但是,目前没有按索引的统计信息。可以在此处找到相关功能请求,以进行跟踪和投票:

https://jira.mongodb.org/browse/SERVER-2227

更新:2016年1月

上面引用的统计信息已从服务器状态命令的输出中删除,因此不再可用。但是,引用的功能请求现已完成,并且在3.2版中以$indexStats聚合运算符的形式提供(链接的文档还包含示例输出)。为了完整起见,这是我放在一起的一个示例:

在进行任何查询之前,我只有2个索引,默认索引_idindexme,都具有0个操作:

> db.foo.aggregate( [ { $indexStats: { } } ] ).pretty()
{
    "name" : "indexme_1",
    "key" : {
        "indexme" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(0),
        "since" : ISODate("2016-01-12T19:03:01.358Z")
    }
}
{
    "name" : "_id_",
    "key" : {
        "_id" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(0),
        "since" : ISODate("2016-01-12T18:59:24.292Z")
    }
}

然后运行一些发现以增加操作indexme并再次检查:

> db.timecheck.find({indexme: 33})
> db.timecheck.find({indexme: 55})

> db.timecheck.aggregate( [ { $indexStats: { } } ] ).pretty()
{
    "name" : "indexme_1",
    "key" : {
        "indexme" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(2),
        "since" : ISODate("2016-01-12T19:03:01.358Z")
    }
}
{
    "name" : "_id_",
    "key" : {
        "_id" : 1
    },
    "host" : "localhost:27017",
    "accesses" : {
        "ops" : NumberLong(0),
        "since" : ISODate("2016-01-12T18:59:24.292Z")
    }
}

来自文档:“版本3.0中已更改:服务器状态输出不再包含workingSet,indexCounters和recordStats部分。” 还有其他想法吗?
serv-inc
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.