为什么我的CouchDB数据库增长如此之快?

kon*_*rad 16 size couchdb

我想知道为什么我的CouchDB数据库变得越来越快,所以我写了一个小测试脚本.此脚本将CouchDB文档的属性更改1200次,并在每次更改后获取数据库的大小.执行这1200个写入步骤后,数据库正在执行压缩步骤,并再次测量db大小.最后,脚本将数据库大小与修订号进行对比.基准测试运行两次:

  • 第一次使用默认的文档修订数(= 1000)(_revs_limit).
  • 第二次将文档修订数设置为1.

第一次运行产生以下图

首先运行http://i46.tinypic.com/xayydw.png

第二轮产生了这个情节

第二次运行http://i50.tinypic.com/2l92l8w.png

对我来说,这是一个非常意外的行为.在第一次运行中,我预计会出现线性增长,因为每次更改都会产生新版本.当达到1000个修订版时,大小值应该是不变的,因为旧的修订版被丢弃.压实后尺寸应显着下降.

在第二次运行中,第一个修订版应该产生某个数据库大小,然后在下面的写入步骤中保持这些大小,因为每个新修订版都会导致删除前一个修订版.

我能理解是否需要一些管理变更所需的开销,但这种增长行为对我来说似乎很奇怪.任何人都可以解释这种现象或纠正导致错误期望的假设吗?

djc*_*djc 4

首先,CouchDB 甚至会保存已删除修订的一些信息(仅 ID 和修订标识符),因为它需要这些信息来进行复制。

其次,由于数据保存在磁盘上的方式(参见维基百科),一次插入一个文档并不是最理想的,这可以解释第一张图中的超线性增长。

  • 我在 couchdb 邮件列表中提出了这个问题。有人认为处理它的底层数据也是增长的原因(http://bit.ly/abPCzQ)。所以看起来你是对的。再次感谢! (2认同)