2016-06-10 19 views
7

Kiedy utworzyć nową instancję bazy danych MongoDB z poleceniemDlaczego tak duża jest pusta baza danych MongoDB?

mongod --dbpath db 

gdzie db jest folder zrobiłem w katalogu, z którego ja nazywam komendę. Po uruchomieniu tego i sprawdzeniu rozmiaru katalogu widzę, że ma on ponad 300MB wielkości - kiedy nie ma tam żadnych danych.

Co tu się dzieje?

Dzięki za pomoc!


EDIT

Dzięki ludziom mówić o wstępnie przyznane wielkości dla journal.

Oto lista plików/folderów w katalogu bazy danych, posortowane według kolejności (tam jest trochę danych w bazie danych przez się, ale jego rozmiar jest pomijalne tutaj):

$du -ha | sort -n 
4.0K ./WiredTiger 
4.0K ./WiredTiger.lock 
4.0K ./WiredTiger.turtle 
4.0K ./WiredTigerLAS.wt 
4.0K ./mongod.lock 
4.0K ./storage.bson 
8.0K ./.DS_Store 
8.0K ./diagnostic.data/metrics.2016-06-10T11-07-50Z-00000 
8.0K ./diagnostic.data/metrics.interim 
16K ./_mdb_catalog.wt 
16K ./index-3-3697658674625742251.wt 
36K ./collection-0-3697658674625742251.wt 
36K ./index-1-3697658674625742251.wt 
36K ./sizeStorer.wt 
44K ./WiredTiger.wt 
60K ./collection-2-3697658674625742251.wt 
72K ./diagnostic.data/metrics.2016-06-10T10-19-31Z-00000 
100M ./journal/WiredTigerLog.0000000003 
100M ./journal/WiredTigerPreplog.0000000001 
100M ./journal/WiredTigerPreplog.0000000002 
168K ./diagnostic.data/metrics.2016-06-10T11-17-58Z-00000 
256K ./diagnostic.data 
300M ./journal 
301M . 

Jak możesz zauważyć, że katalog dziennika zajmuje prawie całą powierzchnię.

+1

To nie jest duplikatem http://stackoverflow.com/questions/9598971, jak 'mongod' nie jest uruchamiany z' - -replSet' w tym przykładzie. Wykaz katalogów będzie potwierdzony, ale ~ 300 MB to oczekiwany rozmiar plików wstępnie przydzielonych w katalogu ['journal'] (https://docs.mongodb.com/manual/core/journaling/) podczas uruchamiania nowego MongoDB 3.2 serwer za pomocą mechanizmu magazynowania WiredTiger. Limit rozmiaru pliku dziennika wynosi 100 MB, a po uruchomieniu oczekiwałbym trzech plików. – Stennie

+0

Dodałem rozmiary plików do mojego pytania - myślę, że to potwierdza twoje założenia. Dziękuję Ci! – dafyddPrys

+0

Dzięki za dodanie wykazu katalogów (fwiw, 'du -ha' wyświetliłby bardziej przyjazne rozmiary plików). Jest to rzeczywiście oczekiwana alokacja wstępna dla plików dziennika z WiredTiger (domyślny mechanizm przechowywania danych jak na MongoDB 3.2). – Stennie

Odpowiedz

7

W zależności od wersji MongoDB i skonfigurowanego mechanizmu magazynowania, kilka plików danych i metadanych zostanie wstępnie przydzielonych podczas uruchamiania. Jest to oczekiwane zachowanie: "puste" wdrożenie nadal prowadzi do utrzymania porządku i danych diagnostycznych.

Na podstawie wykazu katalogów uruchomiono MongoDB 3.2, który domyślnie korzysta z silnika magazynu WiredTiger. WiredTiger przydziela się do 100 MB na plik dziennika, więc nowy wdrożenie ma ~ 300 MB zdefiniowanej przez journal files:

 100M ./journal/WiredTigerLog.0000000003 
    100M ./journal/WiredTigerPreplog.0000000001 
    100M ./journal/WiredTigerPreplog.0000000002 

oprócz plików dziennika, inne metadane, które zostaną utworzone w dbpath (bez konieczności jeszcze wyraźnie utworzonych baz danych) będą obejmować:

  • local baza danych z zakorkowanej kolekcji o nazwie startup_log z pewnym diagnostycznej informacji o każdym wywołaniu startowym tej instancji mongod. Pojawi się powiązany zbiór i plik indeksu dla local.startup_log; Nazwy plików są nieprzezroczyste, ale jako pierwsze pliki utworzone Zgaduję w Twojej przykład mogą to być:

    36K ./collection-0-3697658674625742251.wt 
    36K ./index-1-3697658674625742251.wt 
    
  • Wiele plików metadanych WiredTiger.Zawsze znajdzie się przynajmniej jedna baza danych we wdrożeniu ponieważ baza local jest tworzony domyślnie dla startup_log:

    4.0K ./WiredTiger 
    4.0K ./WiredTiger.lock 
    4.0K ./WiredTiger.turtle 
    4.0K ./WiredTigerLAS.wt 
    16K ./_mdb_catalog.wt 
    36K ./sizeStorer.wt 
    44K ./WiredTiger.wt 
    
  • A katalog diagnostic.data; to jest do okresowego pobierania próbek metryk stanu serwera:

    168K ./diagnostic.data/metrics.2016-06-10T11-17-58Z-00000 
    72K ./diagnostic.data/metrics.2016-06-10T10-19-31Z-00000 
    
1

Podczas tworzenia nowej bazy danych MongoDB tworzy miejsce dla oplog.

Oplog (dziennik operacji) to specjalna kolekcja z ograniczonym dostępem, która przechowuje bieżący zapis wszystkich operacji, które modyfikują dane przechowywane w bazach danych.

+0

Dzięki za prosty wskaźnik :) – dafyddPrys

+0

Oplog jest specyficzny dla replikacji, więc nie zostałby utworzony dla tego przykładu autonomicznego serwera ('mongod --dbpath ...'). Istnieją inne pliki danych, które mogą być wstępnie przydzielone, w zależności od wersji MongoDB i mechanizmu pamięci masowej; lista katalogów zapewni więcej wglądu. – Stennie

Powiązane problemy