Compression Couchdb磁盘大小10倍聚合文档大小

Compression Couchdb磁盘大小10倍聚合文档大小,compression,couchdb,Compression,Couchdb,我有一个couchdb,有16000个类似的文档,每个文档大约500字节。db报告的统计数据(添加逗号): 为什么磁盘大小是数据大小的10倍?如果有什么不同的话,我希望磁盘的大小会更小,因为我使用的是默认的(snappy)压缩,并且这些数据应该是可压缩的 我对此数据库没有任何看法,每个文档都有一个修订版。压实作用很小 以下是命中DB URI的完整输出: {"db_name":"xxxx","doc_count":17193,"doc_del_count":2,"update_seq":17197

我有一个couchdb,有16000个类似的文档,每个文档大约500字节。db报告的统计数据(添加逗号):

为什么磁盘大小是数据大小的10倍?如果有什么不同的话,我希望磁盘的大小会更小,因为我使用的是默认的(snappy)压缩,并且这些数据应该是可压缩的

我对此数据库没有任何看法,每个文档都有一个修订版。压实作用很小

以下是命中DB URI的完整输出:

{"db_name":"xxxx","doc_count":17193,"doc_del_count":2,"update_seq":17197,"purge_seq":0,"compact_running":false,"disk_size":78119025,"data_size":7871518,"instance_start_time":"1429132835572299","disk_format_version":6,"committed_update_seq":17197}

我认为你得到了正确的结果。couchdb以每个4kb的块存储文档(目前找不到引用,但可以通过存储一个空文档来测试)。也就是说,文档的最小大小是4kb

这意味着,即使每个文档存储500字节的数据,couchdb也会将其保存为每个4kb的块。所以做一个粗略的计算

17193*4*1024+(2*4*1024)=70430720


这似乎在78119025的范围内,但仍然稍小一些,但这可能是由于文件在磁盘上的存储方式

文件是否有旧版本?你试过压实吗?你能用“ls-liah”验证磁盘上的大小吗?更新了问题:没有旧版本,我试着压缩到或多或少没有效果。我想我只是好奇这是否正常-有人有沙发数据库可以检查吗?你有没有从couchdb删除任何文档?向您的数据库()发出get请求,您应该会看到类似以下响应:
{“db_name”:“my_db”,“doc_count”:21,“doc_del_count”:0,“update_seq”:32,“purge_seq”:0,“compact_running”:false,“disk_size”:49256,“data_size”:46513,“instance_start_time”:“1431492912363200”,“disk_format_version”:6,“committed_update_seq”:32}
我们对单据数量感兴趣。couchdb“保留”可能会增加数据库大小的已删除文档。我已经删除了16k中的几个文档。我已经在上面添加了DB URI的完整输出。谢谢,我想这已经很接近了。看起来,实际上并不是它总是将文档存储在4K块中,而是不是每次写入仅附加日志(构成DB始终以4K为单位的基础)。因为我在一个接一个地写文档,所以我为每个文档支付4K。但这并不是固有的限制——当我将此数据库复制到另一台主机时,大小降低了8倍,磁盘大小现在非常接近文档的总大小。文档是成批编写的,因此绕过了4K限制。感谢链接!我在找它。如果在中插入文档,也会发生类似的情况。因此,如果要减小数据库的大小,还可以将请求批处理到单个批量插入中。它将针对存储进行优化。
{"db_name":"xxxx","doc_count":17193,"doc_del_count":2,"update_seq":17197,"purge_seq":0,"compact_running":false,"disk_size":78119025,"data_size":7871518,"instance_start_time":"1429132835572299","disk_format_version":6,"committed_update_seq":17197}