Mongo数据库大小不一致

时间:2014-11-15 20:00:25

标签: mongodb gridfs mongodump mongorestore

我使用Mongo GridFS并且我有一个相当大的Mongo数据库,当我使用db.stats()命令时,dataSize为89GB。

当我创建一个mongo转储时,文件系统中的目录大小为86GB,当我在另一台机器上恢复数据库时,运行db.stats()我现在得到122GB。

有人知道转储/恢复后dataSize上升33GB的原因是什么?

修改 这是初始数据库的统计数据

MongoDB shell version: 2.4.5
connecting to: imgdb
rs0:PRIMARY> db.stats();
{
        "db" : "imgdb",
        "collections" : 4,
        "objects" : 2549884,
        "avgObjSize" : 37802.88397276111,
        "dataSize" : 96392968996,
        "storageSize" : 363433842080,
        "numExtents" : 207,
        "indexes" : 4,
        "indexSize" : 307245904,
        "fileSize" : 366974337024,
        "nsSizeMB" : 16,
        "dataFileVersion" : {
                "major" : 4,
                "minor" : 5
        },
        "ok" : 1
}

以下是已恢复数据库的统计信息

MongoDB shell version: 2.6.4
connecting to: imgdb
dbdb.stats();
{
        "db" : "imgdb",
        "collections" : 4,
        "objects" : 2549924,
        "avgObjSize" : 51781.40103312883,
        "dataSize" : 132038637248,
        "storageSize" : 132281756768,
        "numExtents" : 98,
        "indexes" : 4,
        "indexSize" : 199976784,
        "fileSize" : 135159349248,
        "nsSizeMB" : 16,
        "dataFileVersion" : {
                "major" : 4,
                "minor" : 5
        },
        "extentFreeList" : {
                "num" : 0,
                "totalSize" : 0
        },
        "ok" : 1
}

以下是可能原因的一些想法:

  1. 出于某种原因,我在还原版本中还有40个对象!
  2. 不同的mongo版本,可能是索引算法变化的原因吗?
  3. 初始数据库处于复制状态
  4. 初始数据库曾经是320 GB,但我进入并压缩了所有图像并将其减少到75GB。这就是为什么初始数据库上的存储大小要高得多的原因

1 个答案:

答案 0 :(得分:3)

MongoDB 2.6默认使用Powers of Two Record Allocation

在加载数据之前,您可以尝试更改您的mongod newCollectionsUsePowerOf2SizescollMod您的收藏集:

db.runCommand( { collMod: "myCollection", usePowerOf2Sizes: false })