在将 mongo 作为数据库的设置上进行负载测试时,我注意到 mongo 经常记录属于同一操作的这种类型的消息:
Thu May 16 20:44:20.101 [conn3] command voterdb.$cmd command: { group: { ns: "vote",
$reduce: function ( curr, result ) { result.count++; }, cond: { p: "59a0f4cd-8c0c-49c4-
8a11-0e1ac6d89c4a" }, initial: { count: 0 }, out: "inline", key: { p: 1, q: 1, a: 1 } }
} ntoreturn:1 keyUpdates:0 numYields: 2 locks(micros) r:228316 reslen:876 136ms
该应用程序很简单,我将文档添加到集合中,并且添加的每个文档都需要更新属于每种类型的文档数量。因此在此集合中的文档按类型分组的情况下执行分组操作。
我注意到的是,当测试完成时,mongo 继续显示这些消息,并在测试结束几分钟后处理这些分组查询(这意味着查询被延迟处理)。
我读到 mongo 是贪婪的作家,我还读到了关于 yield 操作的文章。我是否正确假设插入优先于分组并且正在产生分组操作导致测试后处理?