将是mongodb中的多线程支持(没有锁定数据库)

时间:2014-04-21 04:29:06

标签: mongodb

据我所知,当我在数据库中写作时,其他人会等待第一个进程尚未完成? 这是真的吗? 如果是真的,也许你知道是否会在mongo中进行多线程处理? 感谢。

1 个答案:

答案 0 :(得分:2)

因此,如果这是您关注的问题,mongodb是线程安全的。您不需要在客户端处理多线程的东西。数据库将应用数据库级别锁定(2.4或更早版本)或集合级别锁定(mongo 2.6中的新增功能)。关于它使用何种锁,请参阅MongoDB FAQ about concurrency

  

从版本2.2开始,MongoDB在每个数据库的基础上实现了大多数读写操作的锁。一些全局操作(通常是涉及多个数据库的短期操作)仍然需要全局“实例”广泛锁定。在2.2之前,每个mongod实例只有一个“全局”锁。

但是,它的线程安全并不意味着您根本不需要担心线程。您可能会发现使用findAndModify

很有用
db.collection.findAndModify({
    query: <document>,
    sort: <document>,
    remove: <boolean>,
    update: <document>,
    new: <boolean>,
    fields: <document>,
    upsert: <boolean>
});

有时如Atomic Operations主题中所述。

编辑:自3.0以来,MongoDB引入了WiredTiger存储引擎,现在我们获得了文档级锁定(仅当您使用WiredTiger时)