压缩 MongoDB 的数据文件
来源:互联网 发布:caffe softmax 源码 编辑:程序博客网 时间:2024/06/11 19:39
MongoDB 采用了磁盘空间预分配的机制,为了避免磁盘碎片以及使用mmap后造成的近一步的内存碎片,但是随着数据的增删除改操作,数据文件不可避免的会产生空洞,造成磁盘空间和内存的浪费。本文说的是这方面的压缩,数据使用某些压缩算法进行压缩的讨论不在此范围。
在MongoDB 中,大概有两种方法可以解决这种问题,但是都不是无痛方式,所以并不推荐使用。
1.通过 repairDatabase 整理数据文件
repairDatabase 是MongoDB 内置的一个db 上的方法,调用这个方法,MongoDB 会扫描db中的所有数据,并将通过重新插入来重新整理数据集合。
这种方法的代价是对这个 db 的读写操作会变得非常之慢,甚至会出现写操作丢失的情况。所以这个时候最好直接停掉客户端的写操作。
可以创建 bar.js 文件,写入如下代码:
// Get a the current collection size.var storage = db.foo.storageSize();var total = db.foo.totalSize();print('Storage Size: ' + tojson(storage));print('TotalSize: ' + tojson(total));print('-----------------------');print('Running db.repairDatabase()');print('-----------------------');// Run repairdb.repairDatabase()// Get new collection sizes.var storage_a = db.foo.storageSize();var total_a = db.foo.totalSize();print('Storage Size: ' + tojson(storage_a));print('TotalSize: ' + tojson(total_a));
然后运行:
$ mongo foo bar.js
运行结果:
MongoDB shell version: 1.6.4connecting to: fooStorage Size: 51351TotalSize: 79152-----------------------Running db.repairDatabase()-----------------------Storage Size: 40960TotalSize: 65153
2.如果应用可以接受,可以考虑使用capped collection
capped collection 是 MongoDB 中的一种特殊collection,它的大小可以限定,数据在这个限定大小内循环写入,在数据集合达到上限后,新数据会覆盖老的数据。这样磁盘上的空洞在一段时间后会自动消除。
参考资料:http://learnmongo.com/posts/compacting-mongodb-data-files/
事实上使用 replication 相关的功能也可以实现以上说的数据压缩,具体过程比较麻烦,还会涉及到客户端的切换等操作。有兴趣的同学可以自己研究一下。同时欢迎有更好的方法提供。
0 0
- 压缩 MongoDB 的数据文件
- 压缩 MongoDB 的数据文件
- php 数据文件的压缩
- 关于数据文件打包压缩的问题
- mongodb数据文件格式
- mongodb数据文件格式
- mongodb 数据文件太大
- MongoDB数据文件内部结构
- MongoDB数据文件内部结构
- MongoDB数据文件内部结构
- MongoDB数据文件内部结构
- MongoDB数据文件内部结构
- mongodb数据文件格式(一)
- mongodb数据文件格式(二)
- MongoDB数据文件内部结构
- MongoDB数据文件结构
- Mongodb 数据文件结构
- MongoDB备份数据的压缩存储
- xCode升级5.0后没有了gcc
- CSS中使用大于号[>]的含义
- 机器学习前沿热点——Deep Learning
- 如何做好职业生涯规划
- 轻松学Visual C++
- 压缩 MongoDB 的数据文件
- 数据分页的相关操作
- maven缺少依赖包,强制更新命令
- BF-TECH3.0 J2EE软件工程师高薪就业品牌课程 分享
- 最近google算法又一次变动
- netbeans中进行Android开发
- 递推法_HDU2515_Yanghee的数表
- Android中LayoutInflater的使用
- Android中Socket大文件断点上传