MongoDB多粒度锁定

时间:2015-05-29 12:07:42

标签: mongodb locking wiredtiger

  

MongoDB使用多粒度锁[1],允许操作锁定全局,数据库或集合级别,并允许各个存储引擎在集合下面实现自己的并发控制(即,在文档级别) WiredTiger)。

除了我已经读过MongoDB有两种可能的存储引擎:MMAPv1(默认)和WiredTiger。从MongoDB 3.0开始,第一个使用集合级锁定,第二个使用文档级锁定。 MongoDB允许操作锁定GLOBAL,DATABASE或COLLECTION级别是什么意思?这意味着我可以选择锁粒度吗?如果是的话我怎么能这样做?这与所选存储引擎的锁粒度(例如WiredTiger中的文档级别)形成对比吗? 如何将我的存储引擎从MMAPv1更改为WiredTiger? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

回答

  

如何将存储引擎从MMAPv1更改为WiredTiger?

This page解释道:

  

启动3.0 mongod。确保使用默认的MMAPv1引擎运行3.0 mongod。

     

使用mongodump导出数据。   mongodump --out <exportDataDestination>   根据需要指定其他选项,例如在启用授权的情况下运行时的用户名和密码。有关可用选项,请参阅mongodump。

     

为WiredTiger创建数据目录。   为WiredTiger创建一个新的数据目录。确保运行mongod的用户帐户具有新目录的读写权限。

     

使用WiredTiger的mongod不会启动使用其他存储引擎创建的数据文件。

     

使用WiredTiger重启mongod。   重新启动3.0 mongod,将wiredTiger指定为--storageEngine,将新创建的WiredTiger数据目录指定为--dbpath。根据需要指定其他选项。

     

mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>   您还可以在配置文件中指定选项。要指定存储引擎,请使用新的storage.engine设置。