MongoDB使用多粒度锁[1],允许操作锁定全局,数据库或集合级别,并允许各个存储引擎在集合下面实现自己的并发控制(即,在文档级别) WiredTiger)。
除了我已经读过MongoDB有两种可能的存储引擎:MMAPv1(默认)和WiredTiger。从MongoDB 3.0开始,第一个使用集合级锁定,第二个使用文档级锁定。 MongoDB允许操作锁定GLOBAL,DATABASE或COLLECTION级别是什么意思?这意味着我可以选择锁粒度吗?如果是的话我怎么能这样做?这与所选存储引擎的锁粒度(例如WiredTiger中的文档级别)形成对比吗? 如何将我的存储引擎从MMAPv1更改为WiredTiger? 提前谢谢。
答案 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设置。