sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB GridFS Filstorlekar enorma för relativt små filer

Ok; efter mycket letande verkar det som om MongoDB förallokerar utrymme i exponentiella filer upp till 2 Gb efter att varje fil kommer att vara 2G.

http://www.mongodb.org/display/DOCS/Excessive+Disk +Uppslag

Mitt testprogram lägger till 80 Mb-filerna i bakgrundsfilerna (.0 - .7 etc.) och när databitarna börjar skrivas in i den sista filen förallokerar Mongo en annan fil som är exponentiellt större än den förra.

Så den första 80Mb-filen, fyller upp 16Mb-filen, 32Mb-filen och 64Mb-bakgrundsfilerna och på grund av metadata tar lite mer utrymme och måste inkräkta något på 128Mb-filen, detta utlöser mongo att förallokera en 256Mb-fil på totalt 496 Mb; allt eftersom fler filer läggs till förallokeras fler filer och när 2 Gb träffas på min testmaskin kan Mongo inte komma åt utrymmet och kollapsar.

Så även om det verkar som att en fil på 80 Mb tar upp mycket mer utrymme än den borde - så är det vettigt på ett omvägande sätt.

Detta kan stängas av genom att köra mongod med --noprealloc men detta rekommenderas endast för testmaskiner.

Tack för dina svar!



  1. Hur kan jag ta bort dubbletter i MongoDb?

  2. Uttrycksträd stöds inte på UpdateOneAsync

  3. Gå igenom alla Mongo-samlingar och kör en fråga

  4. mongodb replicaset new member visar inte korrekt diskanvändning på EC2