在mongodb文档中,它说:

从2.2版开始,MongoDB在每个数据库的基础上为大多数读写操作实现锁.一些全局操作(通常是涉及多个数据库的短期操作)仍然需要全局"实例"范围的锁.在2.2之前,每个mongod实例只有一个"全局"锁.

这是否意味着,在我有,比方说,3个连接的情况下mongodb://localhost/test来自网络上运行的不同应用程序——一次只能写一个?或者只是每个连接?

IOW:是每个连接,还是整个/测试数据库在写入时被锁定?

推荐答案

它不是每连接一次,而是每mongod次.换句话说,锁将存在于该服务器上test数据库的所有连接中.

它也是一个读/写锁,所以如果发生写入,那么读取必须等待,否则MongoDB怎么知道它是一致读取?

然而,我应该提到,MongoDB锁与您获得的SQL/普通事务锁非常不同,通常在平均更新之间,锁会保持大约一微秒.

Mongodb相关问答推荐

将子元素的数组值提取到 mongodb 中的单个数组中?

mongoDB中数组中的聚合和元素

MongoDB 更新:如果新值不同,则将旧字段值推送到另一个数组字段

MongoDB 列表 - 获取每第 N 个元素

如何将记录从一个 mongo 数据库插入另一个?

看起来当我执行 fs.writeFile() 时,更改的文件会重新启动 nodemon.怎么让它不重启?

Node.js 和 MongoDB,重用 DB 对象

升级mongodb

Mongo DB中的Upserting和Id问题

将 mongodb 聚合框架结果导出到新集合

Mongoose 连接认证失败

MongoDb:如何将附加对象插入对象集合?

MongoDb 数据库与集合

mongodb启动错误

如何在 Rails 中混合使用 mongodb 和传统数据库?

Java + MongoDB:更新文档中的多个字段

Meteor订阅不更新集合的排序顺序

如何判断 MongoDB 中是否存在字段?

在 mongoose 中使用 UUID 进行 ObjectID 引用

无法在 mac os 10.9 上安装 mongodb php 驱动程序