我可以使用具有不同RAM容量的服務器在MongoDB 1.8中設置副本集嗎?MongoDB副本集中的每個服務器是否都需要完全相同的RAM?
- server1的:5GB
- 服務器2:2GB
- server(服務器):4GB
如果有,是什麼利弊?
我可以使用具有不同RAM容量的服務器在MongoDB 1.8中設置副本集嗎?MongoDB副本集中的每個服務器是否都需要完全相同的RAM?
如果有,是什麼利弊?
不,你不需要相同的RAM。 (是的,您可以按照描述設置副本集。)
MongoDB對所有緩存使用內存映射文件,這意味着緩存分頁由操作系統處理。具有更多內存的副本將使內存中的數據庫更多;那些少的人將更多地轉到磁盤。
如果可以的話,MongoDB最終會將整個數據庫帶入內存。如果您使用兩個副本進行讀取,一個用於寫入,則可能需要使用5GB和4GB計算機進行讀取,因此它們更有可能正在讀取RAM。
是的,你可以用這種方式配置副本集。
如果是,有什麼優點和缺點?
Here's a doc解釋副本集的主要特徵。我們來看看這些RAM的差異。
優點:
缺點:
所以,這裏的大問題,確實是一個表現。如果你只是爲了設置開發者,那麼它基本上是可行的。但在生產過程中,您有可能完全癱瘓您的應用程序。如果您的應用習慣使用4GB以上的RAM,然後突然降至2GB,則可能無法使用。
大多數生產設置想故障轉移到另一臺「等電源」計算機。
我會猶豫是否將2GB服務器作爲主服務器。這對更新和插入是不利的。更新不在內存中的數據非常昂貴。插入數據需要至少更新一個索引,所以更少的RAM意味着修改該索引通常會更昂貴。 – 2011-05-13 22:51:11
@ gates這是一個很好的觀點。這取決於你的用例。我假設一個閱讀繁重的環境。 – 2011-05-13 23:45:01