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
mongodb3.0+ 版本內置數據壓縮