storageSize
jest sumą wszystkich zakresów dla tych danych, z wyłączeniem indeksów.
Tak więc kolekcja zajmuje 2 zakresy, każdy ma ~ 2 GB, a więc ~ 4 GB. size
zawiera indeksy i uważam, że kilka innych rzeczy, które zawyżają liczbę. Żaden z nich tak naprawdę nie reprezentuje właściwego rozmiaru dysku. Rozmiar dysku db.stats()
ma pole rozmiaru pliku, które jest bliższe temu, czego chcesz. Myślę, że szukasz.
Podręcznik jest nieco lepszy w opisywaniu znaczenia poszczególnych pól, zobacz tutaj kolekcje:
http://docs.mongodb.org/manual/reference/collection-statistics/
A tutaj statystyki bazy danych:
http://docs.mongodb.org/manual/reference/database-statistics/
Niektóre inne potencjalnie istotne informacje:
Polecenie kompaktowe nie zmniejsza plików danych; defragmentuje tylko usunięte miejsce, aby większe obiekty mogły go ponownie wykorzystać. Polecenie kompaktowe nigdy nie usunie ani nie zmniejszy plików bazy danych i ogólnie wymaga dodatkowej przestrzeni do wykonania swojej pracy, zwykle co najmniej jednego dodatkowego zakresu.
Jeśli naprawisz bazę danych, zasadniczo przepisuje ona pliki danych od zera, co usunie wypełnianie i zapisze je na dysku tak skutecznie, jak to tylko możliwe. Jednak aby to zrobić, musisz mieć ~ 2x rozmiar na dysku (właściwie mniej, ale jest to porządny przewodnik).
Należy pamiętać o jeszcze jednej rzeczy - naprawić i usunąć wyściółkę. Współczynnik dopełniania waha się od 1 (brak ruchów dokumentów spowodowanych powiększaniem się dokumentów) do 2 (wiele ruchów spowodowanych wzrostem dokumentów). Twój współczynnik wypełnienia wynoszący ~ 1,67 wskazywałby, że rośniesz (a więc powodujesz ruchy) całkiem sporo.
Podczas kompaktowania lub naprawy bazy danych usuwasz tę dopełnienie - kolejne powiększanie dokumentu spowoduje jeszcze więcej ruchów niż wcześniej. Ponieważ ruchy są relatywnie drogimi operacjami, może to mieć poważny wpływ na wydajność. Więcej informacji tutaj:
http://www.mongodb.org/display/DOCS/Padding+Factor
validate
?