W tym samouczku zbadamy, jak używać polecenia kompaktowego w MongoDB. Polecenie kompaktowe umożliwia przepisanie i defragment danych i indeksów w zbiorze MongoDB bez miejsca na dysku.
Składnia polecenia
Poniższy fragment kodu pokazuje składnię polecenia kompaktowego:
db.Uruchom polecenie(
kompaktowy:
)
Polecenie kompaktowe akceptuje następujące parametry:
Warto pamiętać, że kompaktowa operacja blokuje bazę danych, na której wykonywane jest kompaktowe polecenie. Nie wpływa to jednak na inne bazy danych w klastrze.
Przykład:
Zilustrujmy, jak korzystać z polecenia kompaktowego w MongoDB. Aby najlepiej zobaczyć efekty polecenia kompaktowego, dobrze jest wyświetlić rozmiar kolekcji przed zagęszczeniem.
Załóżmy, że mamy kolekcję o nazwie Disney, która zawiera informacje o filmach Disneya i programach telewizyjnych.
Możemy uzyskać użycie dysku zbierającego przed zagęszczeniem z następującym poleceniem:
kino> db.Disney.Stats (Scale: 1024)
Poprzednie polecenie zwraca statystyki dotyczące określonej kolekcji. Interesuje nas rozmiar kolekcji. Przykładem jest to, jak pokazano:
,
Nindexes: 3,
IndexBuilds: [],
TotalIndexSize: 104,
Suma: 400,
indeksuje się: _id_: 28, tytuł_1: 52, type_1: 24,
ScaleFactor: 1024,
OK: 1
W takim przypadku widzimy, że kolekcja wymaga 400 kB danych przed zagęszczeniem.
Uruchamianie polecenia zagęszcza
Możemy uruchomić operację zagęszczania, jak pokazano następująco:
kino> db.RunCommand (compact: „Disney”, Force: true)
Polecenie powinno zwrócić dane wyjściowe, jak pokazano następująco:
kino> db.RunCommand (compact: „Disney”, Force: true)
bajtesfreed: 300, OK: 1
Następnie możemy sprawdzić statystyki użytkowania w następujący sposób:
Nindexes: 3,
IndexBuilds: [],
TotalIndexSize: 104,
Suma: 399,
indeksuje się: _id_: 28, tytuł_1: 52, type_1: 24,
ScaleFactor: 1024,
OK: 1
Widzimy, że polecenie uwalnia 30 bajtów danych.
Wniosek
W tym krótkim poście omówiliśmy sposób korzystania z polecenia kompaktowego w MongoDB do defragmentacji danych w danym zbiorze i zwolnienia miejsca na dysku hosta.