2012-03-23 110 views
2

如何爲MongoDB數據庫大小計算0.203125GB?0.203125GB MongoDB數據庫的計算邏輯?

所有操作系統(32位和64位)都一樣嗎?

我們可以看到特定數據庫的當前使用情況嗎?

> show dbs 
local (empty) 
tutorial  0.203125GB 

回答

2

MongoDB Documentation

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

此外,在Unix上,mongod會在後臺預分配一個額外的數據文件,並對該文件進行後臺初始化。這些文件預填充零字節。對於較大的數據文件,此初始化過程可能需要一分鐘(在快速磁盤子系統上較少)。在後臺分配新數據庫文件時,在後臺預填充可防止出現重大延遲。

在Windows上,其他數據文件未預先分配。 NTFS可以相對較快地分配填充零的大文件,從而不需要預先分配。

只要數據文件開始使用,下一個將被預分配。

您可以使用--noprealloc命令行參數禁用預分配。這個標誌對於在每次測試之後放置數據庫的小數據集進行測試都很不錯。它不應該在生產服務器上使用。

對於大型數據庫(數百GB或更多),這是沒有意義的結果,因爲未分配空間相對較小。