[英]How to enable data compression in MongoDB
在 MongoDB 中,WiredTiger 提供了 Zlib 压缩选项。
为了启用 Zlib 压缩选项,我使用以下代码创建了一个集合。
db.createCollection( "questions", { storageEngine: {
wiredTiger: { configString: "blockCompressor=zlib" }}})
我运行了一些简单的测试来测量压缩性能并使用以下数据集存储字符串
{
'_id': <ObjectID>,
'question_id': <Five character string>,
'question': <My question>
}
我使用以下代码创建了另一个具有任何压缩选项的集合。
db.createCollection( "questions")
使用以下评论测量数据大小
db.stats(1024*1024).dataSize + db.stats(1024*1024).indexSize
但是我看不到这两个 collections 之间的压缩差异。我参考了以下链接来实现我的过程。
https://www.mongodb.com/blog/post/new-compression-options-mongodb-30
https://scalegrid.io/blog/enabling-data-compression-in-mongodb-3-0/
不要将dataSize
用于此比较,因为它是未压缩的大小。 请改用storageSize
。
以 MongoDB 4.2.2 为例:
// create collections
> db.createCollection('snappy')
> db.createCollection('zlib', {storageEngine: {wiredTiger: {configString: 'block_compressor=zlib'}}})
// insert a compressible document into both collections
> doc = {_id:0, text:<a paragraph of text>}
> db.snappy.insert(doc)
> db.zlib.insert(doc)
// storage size comparison
> db.snappy.stats().storageSize
20480
> db.zlib.stats().storageSize
4096
// data size comparison
> db.snappy.dataSize()
697
> db.zlib.dataSize()
697
所以zlib的存储大小比默认的小很多(snappy),但是它们之间的数据大小是一样的。
注意:如果您仍在使用它,MongoDB 3.0 已经非常过时,自2018年2 月起不再受支持。 请使用更新的版本(截至 2020 年 1 月的最新版本为 4.2.2)。
db.createCollection( "问题", { storageEngine: { wiredTiger: { configString: "blockCompressor=zlib" }}})
错误——抛出无效参数
改用
db.createCollection( "email", { storageEngine: {wiredTiger: { configString: "block_compressor=zlib" }}})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.