zoukankan      html  css  js  c++  java
  • MongoDB空间整理

    测试环境:192.168.1.55,单机
    数据量: 4千万左右。
    测试:db.repaireDatabase效果
    db.compact 效果
    通过stats命令获取该数据库的相关信息:
    db.stats() { "db" : "test",
    "collections" : 7, --collection 数量 
    "objects" : 28, --对象数量 
    "avgObjSize" : 50.57142857142857, --对象平均大小 
    "dataSize" : 1416, --数据大小 
    "storageSize" : 31744, --数据大小(含预分配空间) 
    "numExtents" : 7, --事件数量 
    "indexes" : 7, --索引数量 
    "indexSize" : 57344, --索引大小 
    "fileSize" : 50331648, --文件大小 
    "ok" : 1 --本次取stats 是否正常 
    } >

    1. 未删数据前

    show dbs

    aa 0.000GB
    admin 0.000GB
    gwgps 3.609GB
    local 0.000GB

    db.stats()

    {
    "db" : "gwgps",
    "collections" : 1,
    "objects" : 41345131,
    "avgObjSize" : 554.8684502656431,
    "dataSize" : 22941108764,
    "storageSize" : 3081945088,
    "numExtents" : 0,
    "indexes" : 3,
    "indexSize" : 792702976,
    "ok" : 1
    }

    2.程序删除N条后

    show dbs

    aa 0.000GB
    admin 0.000GB
    gwgps 3.610GB
    local 0.000GB

    db.stats()

    {
    "db" : "gwgps",
    "collections" : 1,
    "objects" : 41344233,
    "avgObjSize" : 554.8684691284514,
    "dataSize" : 22940611272,
    "storageSize" : 3081945088,
    "numExtents" : 0,
    "indexes" : 3,
    "indexSize" : 794288128,
    "ok" : 1
    }

    3.repaireDatabase之后

    db.repairDatabase()

    { "ok" : 1 }

    show dbs

    aa 0.000GB
    admin 0.000GB
    gwgps 3.609GB
    local 0.000GB

    db.stats()

    {
    "db" : "gwgps",
    "collections" : 1,
    "objects" : 41344233,
    "avgObjSize" : 554.8684691284514,
    "dataSize" : 22940611272,
    "storageSize" : 3081945088,
    "numExtents" : 0,
    "indexes" : 3,
    "indexSize" : 792682496,
    "ok" : 1
    }

    4.compact命令
    > db.runCommand({compact:'location'}) { "ok" : 1 }

    show dbs

    aa 0.000GB
    admin 0.000GB
    gwgps 3.612GB
    local 0.000GB

    db.stats()

    {
    "db" : "gwgps",
    "collections" : 1,
    "objects" : 41337719,
    "avgObjSize" : 554.8686059818637,
    "dataSize" : 22937002516,
    "storageSize" : 3081945088,
    "numExtents" : 0,
    "indexes" : 3,
    "indexSize" : 795889664,
    "ok" : 1
    }

    经过重复循环多次删除之后,用repaireDatabase,show dbs, du -sh命令查看空间,暂得到如下结论:
    1. 使用db.repairDatabase时候建议停止数据库的读写,需要大于等于数据差不多的空间,否则可能无法执行该命令。
    2. 4千万数据repairDatabase需要大约10分钟左右,40亿,400亿,4000亿效果待测。
    3. storageSize 该值未减少,因为包括预分配空间,有其积极的意义。
    4. 实际空间减少的是索引所占的空间。
    5. 对空间可控可以禁用日志或日志轮询复写,但不推荐。
    6. 禁止预分配空间或预设置分配空间(启动数据库时可以选择noprealloc参数),但影响插入效率。
    7. 推荐合适时机定时压缩,采用compact压缩指定collection,或repairDatabase压缩数据库。

  • 相关阅读:
    jQuery源码解析(架构与依赖模块)第二章 核心模块
    jQuery源码解析(架构与依赖模块)第一章 理解架构
    js中运算符的优先级
    JS将时间与时间戳互转
    关于JavaScript scope的一切
    java中继承以及其他相关内容
    java中数组的内容
    关于java中的引用数据类型
    关于java的源文件结构以及常用的包
    Java语言的基础内容
  • 原文地址:https://www.cnblogs.com/myibm/p/5939332.html
Copyright © 2011-2022 走看看