2015-05-29 58 views
0

MongoDB使用多粒度锁定[1],它允许运营在全球,数据库或收藏级锁,并允许单独的存储引擎,以实现集下自己的并发控制(即,在WiredTiger的文档级别)。MongoDB的多粒度锁定

除此之外,我读了MongoDB有两种可能的存储引擎:MMAPv1(默认)和WiredTiger。从MongoDB 3.0开始,第一个使用集合级锁定,第二个是文档级锁定。 MongoDB允许操作在GLOBAL,DATABASE或COLLECTION级别上锁定是什么意思?这意味着我可以选择锁粒度?如果是的话我该怎么做?这是否与所选存储引擎的锁定粒度(例如WiredTiger中的文档级别)相反? 如何将我的存储引擎从MMAPv1更改为WiredTiger? 在此先感谢。

+0

好的问题,但请仔细阅读[这](http://stackoverflow.com/help/how-to-ask)。 – marijnz0r

+0

如果我没有以最好的方式写下我的问题,我很抱歉。什么问题?你的意思是我应该在发布之前进行更多搜索? –

+0

你可以搜索更多,是的。但主要的是你一次问5个问题。很难为它写一个答案。在未来尝试提出1个问题。祝你好运! – marijnz0r

回答

1

答到

我怎样才能从MMAPv1改变我的存储引擎WiredTiger?

This page解释它:

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

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

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

的mongod与WiredTiger不会同与不同的存储引擎创建的数据文件开始。

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

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

+0

感谢您解释如何更改存储引擎。那么多粒度锁定呢?我一般知道“多粒度锁定”是什么意思,但我不明白我如何在MongoDB中选择它(或者如果它是自动选择的)。 –

+0

据我所知,你自己无法控制锁定,但我不确定。您可以尝试阅读[FAQ](http://docs.mongodb.org/manual/faq/concurrency/) – marijnz0r