为什么这个mongodb查询在索引时会变慢?

时间:2015-12-07 19:35:35

标签: mongodb mongodb-query

为什么在使用索引时,以下查询会变慢?

db.foo.count({$and:[{'metadata.source':'WZ'}, {'metadata.source':'ED'}]})

索引

{
  "v" : 1,
  "key" : { 'metadata.source" : 1 },
  "name" : "metadata.source_1",
  "ns" : "bar.foo"
}

其中元数据字段是JSON数组

以下单值会立即返回

db.foo.count({'metadata.source':'WZ'})

更新

我使用的是Mongo v3.0.3。安装程序是一个分片副本集,包含大约12M文档。

我尝试了以下相同的延迟

db.foo.count({'metadata.source' : { $all : ['WZ', 'ED'] }})

当我检查db.currentOp()时,它显示以下似乎正确的内容:

"planSummary" : "IXSCAN { metadata.source: 1.0 }"

但是numYields非常高并且继续增加。这是否意味着索引不适合内存并从磁盘读取。应该有足够的内存基于我的db.foo.stats()。还有什么我应该寻求帮助诊断的吗?

这也使用了wiredTiger存储引擎,它似乎有一些明显的性能问题。我尝试升级到3.0.7,看看是否能解决问题。

0 个答案:

没有答案