Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB-1操作_Mongodb - Fatal编程技术网

MongoDB-1操作

MongoDB-1操作,mongodb,Mongodb,在使用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" }, in

在使用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是一个贪婪的作家,我也读到了关于屈服操作的文章。我是否正确地假设插入优先于分组,并且分组操作产生后测试处理

MongoDB在DBs上使用读写器锁,这意味着一个写器在DB上拥有一个独占锁,而多个读写器可以共享一个锁。为了防止长时间运行的操作阻塞写入和读取队列,MongoDB支持让步。主要的方法是围绕着这样一个想法,即内存中的操作应该首先快速提供,而不必等待进入磁盘的操作。下面是一个链接,它提供了关于屈服和分析统计数据的更多细节

还有一些关于应用程序描述的想法。我必须详细介绍一下,特别推荐最好的方法,但我觉得有一种更有效的设计可以帮助您完成工作

  • 使用聚合框架vs Map Reduce:看起来您可能正在使用MR流程来执行理货。聚合框架的开销显著减少,并且几乎总是更快

  • 如果结果表明您只是在进行计数,请查看是否可以简单地执行db.collection.find({..}).count(),因为这将非常快。计数缓存在索引中

  • 最后,是否需要对插入的每个文档执行聚合?有多种选择。例如,您非常希望增加($inc)一些计数器,或者在后台定期执行聚合。完美的场景是,以一种类型的粒度存储文档是可行的,这将允许您在一个操作中同时进行理货和插入


  • 你的问题似乎都在这一页上得到了回答:有没有什么没有涵盖的?