我有2个集合,我正在做一个地图缩减为临时集合,让我们称它们为集合A和集合B和集合_queue。 当我在做map reduce时,用户正在尝试读取和写入集合A.我正在获取各种锁和排队的写入和读取。 我不关心是否有脏读或写,是一种读取和写入集合B并使其成为非原子的方法? 提前谢谢。
答案 0 :(得分:0)
MongoDB中没有办法在关于它的锁定策略的查询中指定任何内容。
首先,您需要检查获取锁定的时间是否确实存在问题(您可以使用MongoDB内部Profiler:https://docs.mongodb.com/manual/administration/analyzing-mongodb-performance/#database-profiling)
然后,如果您没有使用最新版本的MongoDB(或者如果您在不更改存储引擎的情况下升级到最新版本),则可以切换到WiredTigger,它可以逐个锁定移动(适用于3.x系列,前-3.x MongoDB按数据库锁定到文件锁定。因此,如果您使用的是WiredTiger并且由于锁定争用而仍然会遇到严重的延迟,我认为您无法对此做任何事情。
请在此处查看WiredTiger文档:https://docs.mongodb.com/manual/core/wiredtiger/