2015-12-02 10 views
5

私が理解する限り、MongoDBのストレージサイズは常にデータサイズより大きくなければなりません。しかし、Mongo 3.0にアップグレードしてWiredTigerを使用した後は、データサイズがストレージサイズよりも大きいことがわかり始めます。これまでのマージンによって202563549> 53755904というMongoDBのdataSizeをstorageSizeより大きくするにはどうすればよいですか?

{ 
    "db" : "Results", 
    "collections" : NumberInt(1), 
    "objects" : NumberInt(251816), 
    "avgObjSize" : 804.4109548241573, 
    "dataSize" : NumberInt(202563549), 
    "storageSize" : NumberInt(53755904), 
    "numExtents" : NumberInt(0), 
    "indexes" : NumberInt(5), 
    "indexSize" : NumberInt(41013248), 
    "ok" : NumberInt(1) 
} 

注:ここでは

は、データベースのいずれかからです。私はこれがどのようにできるのか混乱しています。 db.stats()はMongo 3.0とは違うものですか?

答えて

8

storageSizeメトリックは、データベース内のすべてのデータエクステントのサイズ(バイト単位)と同じです。圧縮されていない場合、この数値はまだ使用されていないスペース(データエクステント内)と、エクステント内の削除または移動されたドキュメントによって空白にされたスペースを含むため、dataSizeよりも大きくなります。ただし、WiredTigerストレージエンジンを使用している場合、データはディスク上に圧縮されるため、dataSizeよりも小さくなります。

1

WiredTigerエンジンを搭載したMongoDB 3.0では、デフォルトで「スナッピー」圧縮が使用されています。 mongod.confファイルに:(なしblockCompressor):これはあなたのDBのパフォーマンスに影響を与え 場合、あなたはそれをオフにすることを検討することができます提案のための

storage: 
    engine: wiredTiger 
    wiredTiger: 
    collectionConfig: 
     blockCompressor: none 
+1

感謝を。パフォーマンスを傷つけることはありませんが、元々はデータベースのサイズを変えずにdbstatsの数値を使ってメトリックを計算していました。 – KangarooWest

関連する問題