Replication

Mongodb Standalone 性能優於 Replica Set

  • April 21, 2018

我目前正在使用具有高讀取操作的獨立 mongodb。由於副本集可以提供高讀取性能,因此我在 3 個虛擬機上設置了一個 3 節點副本集,並將讀取偏好設置為“次要偏好”。但是我看不到任何性能提升,實際上副本集的執行速度比獨立集慢一點(~2 秒)。配置如下,4GB 記憶體,7GB 數據,所有 3 個 vm 上的 50GB 硬碟對於獨立數據庫,我們正在使用聚合查詢。我想知道與獨立數據庫相比,副本集執行速度較慢的真正原因是什麼。

我想知道與獨立數據庫相比,副本集執行速度較慢的真正原因是什麼。

副本集提供高可用性和數據冗餘,但這些好處最好使用單獨的伺服器資源來實現。

在單個伺服器上使用多個承載數據的副本集成員,您正在添加對底層硬體資源(CPU、RAM、磁碟)的爭用:

  • 每次寫入都必須由每個副本集成員(每個成員都有自己的日誌、oplog 和數據文件)複製和應用,因此與獨立伺服器相比,I/O 將顯著增加。
  • 單個伺服器上的副本集將使用 RAM 來儲存相同數據的多個副本;一個獨立的可以在相同數量的 RAM 中擁有更多的數據和索引。

如果您的性能挑戰的原因是缺乏資源,您應該添加專用資源(例如更多 RAM 或更快的儲存),而不是共享現有資源。

請注意,即使副本集成員位於多台伺服器上,輔助讀取也不是萬能的。有關一些注意事項,請參閱:我可以使用更多副本節點進行擴展嗎?.

在添加額外的伺服器資源之前,我建議先優化索引以支持您的常見查詢和聚合。請參閱: MongoDB 文件中的索引策略

引用自:https://dba.stackexchange.com/questions/204297