为什么CouchDBs _dbs.couch在清除/压缩DB时会继续增长?

时间:2017-08-22 20:53:46

标签: database couchdb filesize purge

设置:

  • Raspberry PI 3上在Docker中运行的CouchDB 2.0
  • 使用pouchdb的节点应用程序,也在相同PI 3的Docker中使用

情景:

  • 在任何特定时刻,CouchDB最多有4个数据库,共有大约60个文档
  • 节点应用程序purges(使用pouchdbs destroy)并定期重新创建这些数据库(其中一些每两秒钟一次,其他每15分钟一次)
  • 始终使用最新条目
  • 重新创建数据库
  • 清除数据库而不是删除文档的原因是,我否则会删除大量已删除的文档,而我的网络客户端无法处理所有这些已删除文档的同步

问题:

文件var/lib/couchdb/_dbs.couch总是在不断增长,它永远不会缩小。上次我独自离开三个星期,它增长到37 GB。 Fauxten表示,CouchDB只包含这些最多60个文档,但是这个文件仍在不断增长,直到它填满所有可用空间

我尝试了什么:

  • 在x86机器上运行所有内容(osx)
  • 运行没有docker的couchdb(因为this info
  • 使用couchdb 2.1
  • 手动运行压缩(没有做任何事情)
  • 谷歌搜索约3天

无论我做什么,我总能得到相同的结果:_dbs.couch不断增长。我也无法找到,文件目的是什么。谷歌搜索特定文件名只产生两页搜索结果,其中没有一个是特定的。

我目前唯一能做的就是手动删除这个文件,并重新启动docker-container,这会删除我的所有数据库,但这不是问题,因为node-application会在不久之后重新创建它们。

1 个答案:

答案 0 :(得分:1)

_dbs数据库是一个元数据库。它记录了集群数据库的所有分片的位置,但由于它也是一个couchdb数据库(虽然不是分片数据库),但它也需要不时进行压缩。

试; curl localhost:5986/_dbs/_compact -XPOST -Hcontent-type:application/json

您可以启用压缩守护程序为您执行此操作,我们默认在最近的2.1.0版本中启用它。

将其添加到local.ini文件的末尾并重新启动couchdb;

[compactions] _default = [{db_fragmentation, "70%"}, {view_fragmentation, "60%"}]