2016-01-08 32 views
0

我有一個副本集包括:(1個伯,仲1和1回收服務器),我執行以下初級:MongoDB 3.0.4 Replica插入時SET數據庫級別鎖定,無法讀取其他集合?

  1. 所有的寫入和讀取正在執行上並從主。
  2. 比方說,我們有一個數據庫,由5個集合A,B,C,d和 Ë

  3. 我們正在執行寫上收集 A(進口或upserting),所以它也適用於其他影響收藏?像mongodb 允許讀取操作同時收集B和C?

  4. 或者它會執行一個寫鎖到數據庫級別,所以它也會阻止 其他讀操作呢?
  5. 列表項我目前收到的問題 是,我在收集A上寫,它會給另一個 執行其他數據庫上的READ操作超時?

請提供例如一個規範,這將是很大的幫助..

+0

您使用的是mmapv1還是wiredtiger存儲引擎?使用有線老虎存儲引擎,MongoDB事務在文檔級是原子級的。併發性因存儲引擎而異.. – harshavmb

+0

存儲引擎:mmapv1 – Aayushi

+0

我們正在使用的mmapv1存儲引擎 – Aayushi

回答

1

隨着副本集,當MongoDB的寫入集合在主說集合的在你的情況下,它也將數據寫入到小學的oplog,它將數據同步到輔助。這裏,oplog集合是local數據庫的一部分。

因此,mongo必須同時鎖定數據庫,即數據庫和local數據庫,以保持數據庫的一致性,並確保寫入操作是原子化的,即全部或全部更新。

不同的mongoDB操作擁有不同的鎖形式。我建議你通過下面的鏈接來了解鎖定機制和併發性。

https://docs.mongodb.org/manual/faq/concurrency/#mgl-ref

可以通過發出db.serverStatus().locks命令檢查鎖的狀態。它告訴你你的mongod包含oplog的不同類型的鎖。

+0

感謝您的回覆,我已經通過此鏈接,我想確認,如果有數據庫級別的意向排他鎖,即小w(w ),它是否允許對該數據庫進行任何讀取操作?小w和大寫W有什麼區別,比如:「locks」:{ 「Global」:「w」, 「MMAPV1Journal」:「w」, 「Database」:「w」, 「Collection」: 「W」 – Aayushi

相關問題