2015-05-29 61 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