2012-07-23 93 views
5

我想爲我的新項目使用mongodb。問題是,mongo使用預分配文件:mongo db --smallfiles開關缺陷

每個數據文件被預分配到一個特定的大小。 (這是爲了防止文件系統碎片等原因。)數據庫的第一個文件名爲.0,那麼.1等.0將爲64MB,.1 128MB等,最高可達2GB。一旦文件達到2GB的大小,每個連續的文件也是2GB。因此,如果最後一個數據文件是1GB,那麼如果該文件最近被創建,則該文件可能是90%空的。

從這裏:http://www.mongodb.org/display/DOCS/Excessive+Disk+Space

而其正常有沒有在它的許多2GB的文件。有一個--smallfiles開關,以限制該文件爲512MB

--smallfiles =>使用較小的初始文件大小(16MB)和最大大小(512MB)

我想知道使用小文件有利於生產?它有什麼缺點。

有noprealloc開關,但它的生產不好。但沒有關於小文件的說明。

回答

6

如果你正在創建一大堆數據庫,那麼你通常只會使用小文件,如果你只是在幾個數據庫中運行,它並不足以解決問題。

對於擁有許多DBS(實際上從小文件中受益)的客戶,我們還沒有看到它的任何性能問題。不過,他們的活動水平通常比其他安裝低。根據Mongo在做什麼,做一些操作可能會稍微慢一些,但我不認爲你會注意到。

+2

另一個需要注意的地方是--smallfiles對仲裁者來說很好 - 仲裁者啓動時通常會預先分配大量文件(例如日誌),因爲在啓動時它不會但是知道它是一個仲裁者。 – 2012-07-24 00:34:04

+2

@AdamC好點,但你也可以爲仲裁者開啓日誌記錄(nojournal = true)。 – Mattias 2012-08-20 17:34:06

1

此外,如果在AWS雲中運行並將m3.small實例與SSD一起使用,則您的存儲空間將被限制爲4GB。設置此選項將允許您擁有一個由SSD支持的小型mongodb節點。可以足夠小任務

+0

我的博客/論壇上的空間有限,我從20GB中獲得了3GB空間,因此小文件似乎是個好主意,可以考慮在小博客/論壇上使用小文件,然後切換到更大的非小文件網站隨着你的成長 – wiak 2015-11-17 06:05:04