繁体   English   中英

跟踪 MongoDB 性能?

[英]Track MongoDB performance?

有没有办法在 MongoDB 中跟踪“查询”性能? 专门测试索引或子文档?

在 sql 中,您可以运行查询、查看执行时间和其他分析指标。

我有一个巨大的 mongoDB 集合,想尝试不同的变体和索引,不知道如何测试它,很高兴看到找到一条记录需要多长时间..(我是 MongoDB 的新手)。 谢谢

这里有两件事你可能很熟悉。

  1. 解释计划
  2. 慢日志

解释计划

这里有一些关于解释的基本文档 运行解释就像db.foo.find(query).explain()一样简单。 请注意,这实际上是在运行查询,因此如果您的查询速度很慢,这也会很慢

要了解输出,您需要查看下面慢速日志中的一些文档。 您基本上会获得有关“扫描了多少索引”、“找到了多少索引”等的详细信息。对于此类性能详细信息,解释实际上取决于您。 阅读上面和下面的文档,为您指明正确的方向。

慢日志

默认情况下,慢日志处于活动状态,阈值为 100 毫秒。 这是有关分析的完整文档的链接 帮助您入门的几个关键点:

获取/设置分析:

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

查看慢查询:

db.system.profile.find()

MongoDB 有一个可以打开的查询分析器。 请参阅: http : //www.mongodb.org/display/DOCS/Database+Profiler

根据我的经验,我建议使用 mtools 支持( https://github.com/rueckstiess/mtools )阅读 mongologs,有很多功能可以帮助阅读输出。

例如,我发现mlogFilter命令非常有用,例如:

mlogfilter.exe   [PATH_TO_FILE_LOG]  --slow --json | mongoimport --db logsTest -c logCollection --drop

启动此命令,您将在表中记录所有慢查询。

在生产环境中激活 mongoprofiler 可能会导致性能问题,因此您可以在读取日志时获得相同的结果。

还要考虑system.profile集合是 ipped ,因此您应该检查system.profile集合的大小,否则您将无法找到您要查找的查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM