1

最近,我意识到我做了很多查询。(我认为)

编辑:

我只是想知道我是否可以分析我如何构建我的应用程序。使用topLinux?或者只是通过在浏览器中加载站点。并以 firebug 为例来查看查询是否很长。没有服务器端技巧?因为我以一个页面为例,它加载了 8 个查询。我觉得很多。不 ?

谢谢 !

4

2 回答 2

2

与任何数据库一样,您应该关注的不一定是查询的总数,而是每个查询返回的数据的查询性能和效率。根据您的应用程序设计、数据模型和索引......每个页面的预期数量可能是八个查询。无论查询的数量如何,您都希望确保常见的查询是快速的。

您可以在几个关键位置尝试了解 MongoDB 中的查询。

按易用性的粗略顺序:

1)对查询使用explain()功能,以获取有关查询计划和索引使用的更多信息。

这应该是了解您的常见查询是否需要索引或是否有效使用索引的起点。

2)您可以为 MongoDB 数据库启用Database Profiler

捕获的分析信息类似于 explain() 输出,包括所有读/写查询。如果您只想查看慢查询而不是全部查询,则可以设置适当的分析级别。“慢查询”的默认值为 100 毫秒,但您可以根据需要进行设置。

为来自 MongoDB shell 的所有查询启用分析"

$ mongo mydb
MongoDB shell version: 2.2.0-rc0
connecting to: mydb

> db.setProfilingLevel(2);
{ "was" : 0, "slowms" : 100, "ok" : 1 }

> db.getProfilingLevel()
2

该文档包含有关查看配置文件数据的更多详细信息。

3)您也可以尝试查看应用程序/驱动程序生成的查询,然后再将其发送到 MongoDB。

这样做的说明(或可能性)将根据您使用的驱动程序而有所不同(检查您的驱动程序文档!)。

4)其他分析工具

有几个实用程序可以分析您的分析数据并帮助提供索引建议:

于 2012-08-11T22:43:40.087 回答
0

您可以检查 MongoDB 日志中的慢查询:http ://www.mongodb.org/display/DOCS/Logging

至于查询量 - 让您摆脱这种 SQL as-few-queries-as-possible 思维定势。扔掉 MongoDB 的规则手册。例如,每次迭代游标时,它都会再次运行查询,因为它从数据库中流出,所以您认为您正在运行 8 个查询,但实际上可能已经每秒运行 10 个。Mongo 的结果集与 SQL 不同,查询它们不应被视为相同。


我意识到,当我回答这个问题时,我实际上粘贴了日志链接而不是分析链接,但是@Stennie 粘贴了正确的链接,所以没关系。

于 2012-08-11T18:52:19.463 回答