2014-02-16 121 views
1

如果文檔大小爲1KB,Mongo可以每秒插入或刪除8000個文檔,這是否意味着文檔大小爲8KB,那麼Mongo將只能處理1000個文檔?文檔大小是否影響mongo的性能?

+0

我從來沒有聽說過這個約束......你可以閱讀這個關於MongoDB限制的http://docs.mongodb.org/manual/reference/limits/手冊。 –

+0

你從哪裏得到這些數據?單個文檔大小有一個限制 - 16MB(afaik),但這全是 –

+1

它可能不是線性的。如果你很好奇,那麼測量它。這一切都取決於瓶頸在哪裏。 –

回答

1

任何磁盤寫入都將取決於硬件屬性,操作系統和底層文件系統。大多數文件系統以通常爲物理塊大小的多倍的塊讀取和寫入數據。例如,4096字節的塊大小非常常見。

這就是說,如果你的文檔大於4K並且你有4K塊大小,那麼它將需要2個塊來編寫你的文檔,另一方面,填充可能會考慮以及比塊小得多的文檔尺寸。我不知道Mongo如何優化寫入,也許它做了一些批量寫入,鏈接等。

一般來說,您不應該關心這些問題,但是如果您確實擁有大量數據並以某種方式認爲文檔大小導致性能下降,您可以使用各種文檔大小進行一些測試,詢問Mongo支持,並閱讀Mongo源代碼。

+0

MongoDB並非直接連接磁盤,因此性能不會立即顯現,如果您緩解幕後的IO負載,那麼寫入時不會有任何可見的性能影響 – Sammaye

+0

感謝您的回覆。我做了一些測試,結果是插入不同大小的文檔消耗不同的時間。也許原因是磁盤io容量或mongo容量? – vjHuang

+0

它應該與文檔大小成正比。如果docA大小比docB大小小2倍,那麼插入大量docA文檔應該快2倍。這並不是那麼直截了當,因爲Mongo在雜誌上寫了一篇文章,並且將IO的其餘部分延遲了一分鐘,但從長遠來看,你可能會看到這種關係。事實上,也許它只會快1.5倍。很難說,但你可以建立這樣的圖形。 –

相關問題