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压缩数据库。
MongoDB空间整理的更多相关文章
- mongodb安全整理
本文大都网上参考的,我只是整理了一下 一默认配置情况 1.MongoDB安装时不添加任何参数,默认是没有权限验证的,任何用户都可以登录进来,而且登录的用户可以对数据库任意操作而且可以远程访问数据库,需 ...
- mongodb基础整理篇————常规操作[二]
前言 简单整理一下常规操作. 正文 虽然一般说写代码看的是思想,但是呢,如果不知道mongodb 有哪些常用的操作,那么你怎么能知道mongodb是否符合你的需求,比如说如果聚合功能都没有,你得自己写 ...
- mongodb基础整理篇————副本概念篇[外篇]
前言 副本集整理. 开始逐步把mongodb博客补齐了. 正文 什么是副本集 副本集是一组服务器,其中一个是用于处理写入操作的主节点,还有多个用于保存主节点的数据副本的从节点. 如果主节点崩溃了,则从 ...
- 【面试虐菜】—— MongoDB知识整理
为什么我们要使用MongoDB? 特点: 高性能.易部署.易使用,存储数据非常方便.主要功能特性有: 面向集合存储,易存储对象类型的数据. 模式自由. 支持动态查询. 支持完全索引,包含内部对象. 支 ...
- 现在开始学习WPF了,mongodb在整理一下
回忆一下自己学习mongodb的过程 1安装 2增删改查 3数据类型转换 4GridFS 5权限管理--开启权限之前先建立一个超级用户(admin库中),开启权限,用该用户登陆,进入admin数据库( ...
- mongodb菜鸟整理 2 C#Driver使用
一下载 从官网上下载... 二 引用 下载完了将其解压到某个文件夹内,打开vs建立一个工程 右键引用,找到刚才解压的目录,把里面说有的dll文件全部添加就好 三 命名空间 我都是先打然后alt+shi ...
- mongodb菜鸟整理
一,mongodb的安装与连接 从官网下载后,解压或者安装到某个目录下 1 首先需要自己创建一个db文件夹 ,用于存放数据库的数据 然后还需要创建一个log文件夹,里面需要自己创建一个mongodb ...
- MongoDB——待整理
MongoDB mongoose——http://mongoosejs.com/ npm i mongoose Mongoose 通过外键与另一张表建立关联:Mongoose Populate 基本使 ...
- mongoDB用法整理
1. mongoDB UI工具, Studio 3T,用Non_Commercial的版本就足够. 2. 查询某字段长度大于特定值的 db.test.find({ F_DAQDATA: { $type ...
随机推荐
- vs c++中读取数据流并存储
ifstream in("test.txt"); vector<string> vs; string s; while(!in.eof()) { in>>s ...
- 解决ubuntu14.04下Qt 5.3.1下的QtCreator fcitx,ibus不能输入中文
http://my.oschina.net/u/219482/blog/341452 感谢作者 ubuntu 14.04从Qt官网下载的最新版qt,安装过程很顺利,但却发现没办法输入中文(我用的是 f ...
- JUC回顾之-可重入的互斥锁ReentrantLock
1.什么是可重锁ReentrantLock? 就是支持重新进入的锁,表示该锁能够支持一个线程对资源的重复加锁. 2.ReentrantLock分为公平锁和非公平锁:区别是在于获取锁的机制上是否公平. ...
- 如何开启PostGreSQL的远程访问端口?
用以下办法即可: postgresql默认情况下,远程访问不能成功,如果需要允许远程访问,需要修改两个配置文件,说明如下: 1.postgresql.conf 将该文件中的listen_address ...
- Lucene实践
Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能. OK,大家都知道这个是一个搜索检索工具,那究竟是怎么做检索的,其实道理是 ...
- Java封装自己的Api
转自:http://www.2cto.com/kf/201404/291555.html 随着学习的深入,我们都想封装自己的Api,但对于新手这并不是一件简单容易的事! 我要达到的效果:自己封装一些方 ...
- matlab练习程序(矩形变换为单连通形状)
变换使用的模板必须是单连通的,而且模板中心必须在模板内,如果在模板中打个结或是月牙形,这里的程序就处理不了了. 虽然非单连通模板也有办法处理,不过不是这里要讨论的. 这里用到的方法和矩形变换为圆那片文 ...
- float数据在内存中是怎么存储的 AND IEEE754测试程序
float类型数字在计算机中用4个字节存储.遵循IEEE-754格式标准: 一个浮点数有2部分组成:底数m和指数e 底数部分 使用二进制数来表示此浮点数的实际值指数部分 占用8bit的二进制数,可表示 ...
- jq查找父类元素三个函数的区别
parent是找当前元素的第一个父节点,parents是找当前元素的所有父节点 parent().parents()与closest()方法两两之间有类似又有不同,本篇简短的区分一下这三个方法.通过本 ...
- javascript操作cookies
1.读取cookies getCookie: function(c_name){ if (document.cookie.length > 0) { var c_start = document ...