2012-09-03 64 views
6

我擁有數十萬條記錄的分片和複製MongoDB。我知道Mongo使用一些填充因子編寫數據,以允許快速更新,而且我也知道要複製數據庫,Mongo應該存儲操作日誌,這需要一些(實際上很多)空間。即使有了這些知識,我也不知道如何根據典型數據庫記錄的大小估算Mongo所需的實際大小。到目前爲止,我每週修復的次數都是2-3次。Total MongoDB存儲大小

所以問題是:如何估計MongoDB所需的總存儲大小,以字節爲單位的平均記錄大小?

回答

4

簡短的回答是:你不能,不完全基於平均。文件大小(至少不是以任何準確的方式)。

爲了更冗長解釋:

所需的磁盤空間不是簡單的平均文件的大小的功能。您創建的索引還需要空間。如果你確實觸發了這些動作(儘管有填充,這確實發生了),那麼就有了所需的空間 - 這個空間被放置在一個列表中被重用,但取決於你隨後插入的數據,它可能或不可能重新使用該空間。

您還可以添加事實:預分配意味着偶爾少數文檔會在分配新數據文件時將磁盤空間利用率提高〜2GB。當然,如果有足夠的數據,這實際上是一個舍入誤差,但值得記住。

假設一致的使用模式,估計這種類型的數據大小比率的唯一方法是根據您的特定使用情況隨時間變化趨勢,並跟蹤插入的數據的磁盤空間使用情況(可能的文檔數量取決於文檔大小的可變性,優於數據量)。

同樣,如果您追蹤插入率,doc大小以及從重新同步/修復中獲得的空間。僅供參考 - 您可以重新同步副本以獲得數據文件的「全新」副本,而不是執行修復,這可能會造成較小的破壞性,並且根據您的設置使用更少的空間。