测试环境: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压缩数据库。

MongoDB空间整理的更多相关文章

  1. mongodb安全整理

    本文大都网上参考的,我只是整理了一下 一默认配置情况 1.MongoDB安装时不添加任何参数,默认是没有权限验证的,任何用户都可以登录进来,而且登录的用户可以对数据库任意操作而且可以远程访问数据库,需 ...

  2. mongodb基础整理篇————常规操作[二]

    前言 简单整理一下常规操作. 正文 虽然一般说写代码看的是思想,但是呢,如果不知道mongodb 有哪些常用的操作,那么你怎么能知道mongodb是否符合你的需求,比如说如果聚合功能都没有,你得自己写 ...

  3. mongodb基础整理篇————副本概念篇[外篇]

    前言 副本集整理. 开始逐步把mongodb博客补齐了. 正文 什么是副本集 副本集是一组服务器,其中一个是用于处理写入操作的主节点,还有多个用于保存主节点的数据副本的从节点. 如果主节点崩溃了,则从 ...

  4. 【面试虐菜】—— MongoDB知识整理

    为什么我们要使用MongoDB? 特点: 高性能.易部署.易使用,存储数据非常方便.主要功能特性有: 面向集合存储,易存储对象类型的数据. 模式自由. 支持动态查询. 支持完全索引,包含内部对象. 支 ...

  5. 现在开始学习WPF了,mongodb在整理一下

    回忆一下自己学习mongodb的过程 1安装 2增删改查 3数据类型转换 4GridFS 5权限管理--开启权限之前先建立一个超级用户(admin库中),开启权限,用该用户登陆,进入admin数据库( ...

  6. mongodb菜鸟整理 2 C#Driver使用

    一下载 从官网上下载... 二 引用 下载完了将其解压到某个文件夹内,打开vs建立一个工程 右键引用,找到刚才解压的目录,把里面说有的dll文件全部添加就好 三 命名空间 我都是先打然后alt+shi ...

  7. mongodb菜鸟整理

    一,mongodb的安装与连接 从官网下载后,解压或者安装到某个目录下 1  首先需要自己创建一个db文件夹 ,用于存放数据库的数据 然后还需要创建一个log文件夹,里面需要自己创建一个mongodb ...

  8. MongoDB——待整理

    MongoDB mongoose——http://mongoosejs.com/ npm i mongoose Mongoose 通过外键与另一张表建立关联:Mongoose Populate 基本使 ...

  9. mongoDB用法整理

    1. mongoDB UI工具, Studio 3T,用Non_Commercial的版本就足够. 2. 查询某字段长度大于特定值的 db.test.find({ F_DAQDATA: { $type ...

随机推荐

  1. [Linux] xargs的- n1参数

    起因在对一堆*.tar.gz文件解压缩时,发现tar xvfz *.tar.gz不管用,一查,原来是tar xvfz *.tar.gz会被shell给拆成tar xvfz a.tar.gz b.tar ...

  2. css3学习总结3--CSS3图像边框

    border-image属性 .className{ border-image:url(/course/54d1cae088dba03f2cd1fec1/img/border.png) 20 20 2 ...

  3. 一、HTML和CSS基础--网页布局--实践--导航条菜单的制作

    案例一:导航菜单的制作 垂直菜单

  4. JAVA基础学习之String、StringBuffer、StringBuilder、基本数据类型的使用、整形进制转换、集合Collection、Vector、ArrayList、LinkedList、HashSet、TreeSet等(3)

    主函数类MainDemo.java package com.itcast.test20140109; import java.util.ArrayList; import java.util.Coll ...

  5. Ubuntu16.04 安装openjdk-7-jdk

    Ubuntu16.04 安装openjdk-7-jdk sudo apt-get install openjdk-7-jre 或者sudo apt-get install openjdk-7-jdk ...

  6. AndroidDev站点推荐-zz

    Android-Dev-Bookmarks 项目目前可以生成书签文件导入到浏览器中了,ADB 站点上的内容也是一样的,方便在线浏览.现在内容更新开始按期发布同时也会有个简短的介绍,内容逐渐增多比较难直 ...

  7. sqlserver日常维护脚本

    SQL code --备份declare @sql varchar(8000) set @sql='backup database mis to disk=''d:\databack\mis\mis' ...

  8. 【转】有赞的kylin方案

    http://tech.youzan.com/kylin-mondrian-saiku/

  9. (int &)a 和(int)a

      [cpp] view plain copy float a = 1.0f;     cout < < (int)a < < endl;     cout < < ...

  10. http://jingyan.baidu.com/article/fcb5aff78e6a48edab4a7146.html

    http://jingyan.baidu.com/article/fcb5aff78e6a48edab4a7146.html