Aggregate Query的MongoDB执行时间



我正在尝试查找聚合查询的执行时间。查询如下:

 db.table.aggregate([{$sort: {count:-1}}]);

它按desc计数对100K文档进行排序。命令行没有显示所有记录,所以我改为执行以下操作:

 db.table.aggregate([{$sort: {count:-1}}]).toArray();

我已经完成了db.setProfileingLevel(2);

当我运行第一个查询并执行时

 db.system.profile.find((),{millis:1});
 I get millis : 18

当我运行第二个查询并从配置文件中查找时间时

 I get millis:18 , millis:87 , millis: 81 ... millis:75, millis:35. I get 12 different execution times.

我想知道我是否想正确地测量聚合的执行时间,在聚合中,我通过计数desc对整个集合进行排序。正确的方法是什么。带有.toArray()的查询是否是度量执行的正确查询。你能帮我量一下执行时间吗。

尝试将查询日志级别更改为1。这样可以减少很多杂物。现在执行您的聚合查询,并根据日志文件中的查询查找protocol:op_command xxxms

就我而言,我正在执行

var cursor = db.doc.aggregate([{$sort:{_id:-1}},{$group:{_id:null, count:{$sum:1}}}]);

此查询返回光标,其日志条目显示为

2016-03-24T00:00:52.590-0400 I COMMAND  [conn7] command test.doc command:
aggregate { aggregate: "doc", pipeline: [ { $sort: { _id: -1.0 } },
{ $group: { _id: null, count: { $sum: 1.0 } } } ], cursor: {} }
keyUpdates:0 writeConflicts:0 numYields:5431 reslen:127 locks:{ 
Global: { acquireCount: { r: 10934 } }, Database: { acquireCount: 
{ r: 5467 } }, Collection: { acquireCount: { r: 5467 } } } protocol:op_command 1497ms

请参阅日志中查询操作的末尾。这将是您的执行时间,无需在光标上进行迭代。

最新更新