2016-06-10 16 views
7

Komutadan db Ben komut diyoruz hangi dizinde yapmış bir klasördürBoş bir MongoDB veritabanı neden bu kadar büyük?

mongod --dbpath db 

ile yeni mongoDB veritabanı örneği oluşturduğunuzda. Bunu çalıştırdıktan ve dizinin boyutunu kontrol ettikten sonra, orada hiçbir veri yokken 300MB boyutunun üzerinde olduğunu görüyorum.

Neler oluyor burda?

Yardımlarınız için teşekkürler! journal için önceden tahsis boyutu hakkında konuşurken insanlara


DÜZENLEME

teşekkürler. İşte

sıralarına göre veritabanı dizininde dosya/klasör listesi bulunmaktadır (orada artık veritabanında verilerin biraz, ama onun büyüklüğü burada önemsizdir):

$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 . 

olarak Gördüğünüz gibi dergi dizini hemen hemen tüm alanı kaplıyor.

+1

Bu mongod' 'ile başladı varlık değildir' gibi http://stackoverflow.com/questions/9598971 kopyası değil - -replSet 'bu örnekte. Bir dizin listesi onaylayacaktır, ancak ~ 300MB, yeni bir MongoDB 3.2 başlatılırken ['journal'] (https://docs.mongodb.com/manual/core/journaling/) dizinindeki önceden ayrılmış dosyalar için beklenen boyuttur. WiredTiger depolama motorunu kullanan sunucu. Günlük dosya boyutu sınırı 100MB'tır ve başlangıçta üç dosya beklerdim. – Stennie

+0

Soruma boyut dosyaları ekledim - bence bu sizin varsayımlarınızı onaylıyor. Teşekkür ederim! – dafyddPrys

+0

Dizin listesini eklediğiniz için teşekkürler (fwiw, 'du -ha' daha kolay dosya boyutları gösterecektir). Bu gerçekten WiredTiger (MongoDB 3.2'deki varsayılan depolama motoru) ile günlük dosyaları için beklenen ön ayırmadır. – Stennie

cevap

7

MongoDB sürümünüze ve yapılandırılmış depolama motorunuza bağlı olarak, çeşitli veri ve meta veri dosyaları başlangıçta ön belleğe alınacaktır. Beklenen davranış budur: "boş" dağıtım hala temizlik ve tanılama verileriyle sonuçlanır.

Dizin listeye bağlı olarak, WiredTiger depolama motorunu kullanan varsayılan MongoDB 3.2'yi çalıştırıyorsunuz. WiredTiger dergi dosya başına 100 MB'ye kadar ayırır, böylece yeni dağıtım ~ preallocation'u journal files 300 MB sahiptir: (Henüz açıkça oluşturulan veritabanlarını sahip olmadan) dbpath oluşturulacak günlük dosyalarından Kenara

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

, diğer meta içerecektir: a şapkalı koleksiyonu ile

  • A local veritabanı mongod bu örneğinin her başlangıç ​​çağırma hakkında bazı tanısal bilgiler startup_log aradı. local.startup_log için ilişkili bir koleksiyon ve dizin dosyası olacaktır; dosya adları opak ama ilk dosyalar senin örnekte tahmin ediyorum oluşturulan olarak bu olabilir:

    36K ./collection-0-3697658674625742251.wt 
    36K ./index-1-3697658674625742251.wt 
    
  • Çoklu WiredTiger meta dosyaları.local veritabanı startup_log için varsayılan olarak oluşturulur beri hep dağıtımın en az bir veritabanı olacaktır:

    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 diagnostic.data dizini; Bu sunucunun durumu ölçütlerinin periyodik örnekleme içindir:

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

Yeni bir veritabanı oluşturduğunuzda MongoDB, oplog için alan yaratır.

Oplog (işlem kaydı), veritabanlarınızda depolanan verileri değiştiren tüm işlemlerin bir kayıt kaydını tutan özel başlıklı bir koleksiyondur.

+0

Basit işaretçi için teşekkürler :) – dafyddPrys

+0

Bu oplog çoğaltmaya özeldir, bu nedenle bağımsız bir sunucu örneği için oluşturulmaz ('mongod --dbpath ...'). MongoDB sürümüne ve depolama motoruna bağlı olarak önceden tahsis edilebilecek başka veri dosyaları vardır; bir dizin listesi daha fazla bilgi sağlayacaktır. – Stennie

İlgili konular