是否有可能在Mongodb中看到导致索引未命中的查询

时间:2013-09-06 15:10:23

标签: mongodb

这是我的开发环境的MongoDB服务器状态。

  db.serverStatus()
{
        "version" : "1.6.5",
        "uptime" : 792725,
        "uptimeEstimate" : 790787,
        "localTime" : "Fri Sep 06 2013 11:05:32 GMT-0400 (EDT)",
        "globalLock" : {
                "totalTime" : 792724778241,
                "lockTime" : 8441722074,
                "ratio" : 0.010648994841225452,
                "currentQueue" : {
                        "total" : 0,
                        "readers" : 0,
                        "writers" : 0
                }
        },
        "mem" : {
                "bits" : 64,
                "resident" : 3729,
                "virtual" : 13764,
                "supported" : true,
                "mapped" : 12443
        },
        "connections" : {
                "current" : 94,
                "available" : 7906
        },
        "extra_info" : {
                "note" : "fields vary by platform",
                "heap_usage_bytes" : 726448,
                "page_faults" : 403439
        },
        "indexCounters" : {
                "btree" : {
                        "accesses" : 1804253,
                        "hits" : 1803993,
                        "misses" : 260,
                        "resets" : 0,
                        "missRatio" : 0.0001441039588128716
                }
        },
        "backgroundFlushing" : {
                "flushes" : 13211,
                "total_ms" : 176124,
                "average_ms" : 13.331617591401105,
                "last_ms" : 9,
                "last_finished" : "Fri Sep 06 2013 11:04:48 GMT-0400 (EDT)"
        },
        "cursors" : {
                "totalOpen" : 0,
                "clientCursors_size" : 0,
                "timedOut" : 8
        },
        "repl" : {
                "ismaster" : true
        },
        "opcounters" : {
                "insert" : 512974,
                "query" : 18735335,
                "update" : 6690119,
                "delete" : 217251,
                "getmore" : 19071,
                "command" : 8616326
        },
        "asserts" : {
                "regular" : 0,
                "warning" : 0,
                "msg" : 0,
                "user" : 69117,
                "rollovers" : 0
        },
        "ok" : 1
}

我的问题是,是否可以看到索引未命中的值(查询)。

我已将概要分析级别设置为db.setProfilingLevel(2) 使用mongoexport选项从system.profile集合中收集记录。

1 个答案:

答案 0 :(得分:3)

您应该知道indexCounters.btree.misses并不表示在索引中找不到值;这意味着当服务器尝试访问索引页时,索引页不在内存中,因此必须将其分页。

在索引中找不到特定值的查询只是一个查找无法找到满足查询结果的查询。

记录“有问题”查询的一种方法是使用slowms选项。然后,任何花费超过给定毫秒数的查询都将写入日志文件。

您指定slowms作为db.setProfilingLevel()的可选第二个参数,有关详细信息,请参阅here