2010-12-09 168 views
21

有没有一种方法可以跟踪MongoDB中的“查询”性能?特别测试索引或子文档?跟踪MongoDB性能?

在sql中,您可以运行查询,查看执行时间和其他分析指标。我有一个巨大的mongoDB集合,想要尝试不同的变化和索引,不知道如何测试它,会很高兴看到需要多长时间才能找到一个记录..(我是MongoDB中的新手)。谢谢

回答

22

这里有两件事情,你可能会熟悉。

  1. 解释计划
  2. 慢日志

解释计划上解释

Here are some basic docs。运行解释与db.foo.find(query).explain()一样简单。 (请注意,这实际上运行的查询,所以如果您的查询很慢,这将是太

要了解输出,您需要检查下面的慢日志中的一些文档。您基本上会获得关于“扫描了多少索引”,“找到多少索引”等详细信息。与此类性能细节的情况一样,解释真的取决于您。阅读上面和下面的文档,指出你正确的方向。

慢速日志

默认情况下,缓慢日志是活动与100ms的阈值。 Here's a link到分析的完整文档。几个关键点,让你开始:

get/set方法分析:

db.setProfilingLevel(2); // 0 => none, 1 => slow, 2 => all 
db.getProfilingLevel(); 

见慢查询:

db.system.profile.find() 
+0

只是在几年后添加:现在“新”推荐的使用解释方式是:db.foo.explain()。find(query)。在“查找”之前注意“解释”。另外,指定explain(true)以获取更多详细信息,例如所检查文档的数量:db.foo.explain(true).find(query);键入db.foo.explain()。帮助列出您可以使用解释的查询。 – alexbt 2016-08-24 12:35:03