0

我的 q_development.users 表有超过 1,000,000 条记录。奇怪的是,我的 mongodb 在这个集合上记录了一些耗时较长的项目,而没有明确记录查询是什么。ntoreturnMongoDB甚至不记录ntoskip这些查询。这是非常可疑的,因为reslen它们都是一样的。日志如下所示

Fri May 25 00:01:00 [conn56429] query q_development.users nscanned:1207786 reslen:20 2390ms
Fri May 25 00:09:09 [conn55528] query q_development.users nscanned:1207799 reslen:20 2623ms
Fri May 25 00:11:11 [conn55529] query q_development.users nscanned:1207800 reslen:20 2660ms
Fri May 25 00:28:56 [conn55586] query q_development.users nscanned:1207823 reslen:20 2777ms
Fri May 25 00:46:45 [conn55529] query q_development.users nscanned:1207850 reslen:20 4218ms
Fri May 25 00:47:46 [conn56169] query q_development.users nscanned:1207851 reslen:20 2392ms
Fri May 25 01:30:49 [conn57141] query q_development.users nscanned:1207901 reslen:20 4289ms

你知道哪些可能的查询可以生成这样的 mongodb.log 项目吗?非常感谢!

4

1 回答 1

1

这只是意味着一些查询花费了很长时间——例如第一个查询 2390 毫秒。任何花费超过 100 毫秒(默认)的东西都会被记录下来。在这种情况下,对“用户”的查询似乎需要很多时间。显示nscanned必须从磁盘查找多少文档。它们每个都超过一百万,这可能意味着您正在执行全表扫描,即没有索引的查询。启用探查器以确定哪个查询实际上导致了这个未索引的全表扫描。

在这种情况下,因为没有显示查询,您很可能会在没有参数的情况下进行查找。

于 2012-05-26T21:38:27.853 回答