Fork me on GitHub

mongodb3.0+ 版本内置数据压缩

mongodb3+版本之后支持zlib和snappy。

创建压缩的集合

db.createCollection( "email", {storageEngine:{wiredTiger:{configString: 'block_compressor=zlib'}}})

插入测试数据:

for (var i=0;i<20000;i++){ 
db.users.insert({'name':i,'age':12,'remark':'你也许会好奇,为什么对索引压缩选项与集合的不同 。前缀压缩是相当简单的 – 值的“前缀”是将数据集中重复数据删除。这对于某些数据集特别有效,对复合索引特别有效,如第一列与第二列的所有唯一值重复。前缀索引还提供了一个非常重要的优势优于Snappy或zlib – 可以直接使用压缩索引进行查询操作。'}) 
}

数据大小

db.email.dataSize()

占用磁盘大小

db.email.storageSize()

db.stats();

 

 "collections" : 3,表示当前数据库有多少个collections.可以通过运行show collections查看当前数据库具体有哪些collection.

 "objects" : 13,表示当前数据库所有collection总共有多少行数据。显示的数据是一个估计值,并不是非常精确。

 "avgObjSize" : 36,表示每行数据是大小,也是估计值,单位是bytes

 "dataSize" : 468,表示当前数据库所有数据的总大小,不是指占有磁盘大小。单位是bytes

 "storageSize" : 13312,表示当前数据库占有磁盘大小,单位是bytes,因为mongodb有预分配空间机制,为了防止当有大量数据插入时对磁盘的压力,因此会事先多分配磁盘空间。

 "numExtents" : 3,似乎没有什么真实意义。我弄明白之后再详细补充说明。

 "indexes" : 1 ,表示system.indexes表数据行数。

 "indexSize" : 8192,表示索引占有磁盘大小。单位是bytes

"fileSize" : 201326592,表示当前数据库预分配的文件大小,例如test.0,test.1,不包括test.ns。

参考:

http://t.dbdao.com/archives/new-compression-options-mongodb-30.html

posted @ 2018-12-05 18:00  迁梦余光  阅读(1978)  评论(0编辑  收藏  举报