我最近遇到的情况是我的CouchDB实例使用了20GB VM实例上的所有可用磁盘空间.经过调查,我发现/ usr/local/var/lib/couchdb /中的一个目录包含一堆.view文件,其中最大的是16GB.我能够删除*.view文件以恢复正常操作.我不确定为什么.view文件变得如此之大以及CouchDB如何管理.view文件.
更多信息.我有一台运行Ubuntu 9.10(karmic)的VM,512MB和CouchDB 0.10.VM有一个cron作业,它调用查询视图的Python脚本.cron作业每五分钟运行一次.每次查询视图时,.view文件的大小都会增加.我写了一份工作来按小时监控这个问题,几天后我看不到文件翻滚或者其他尺寸减小了.
有没有人对此问题有任何见解?有没有我错过的文件?我无法找到有关该主题的任何内容,但这可能是由于查找错误的地方或我的搜索字词.
Ker*_*err 13
CouchDB非常耗油,为了提高性能而交换磁盘空间.随着项目的添加,视图的大小会增加.您可以通过清理和压缩来恢复不再需要的磁盘空间.
每次创建更新或删除文档时,视图索引都将使用对文档的相关更改进行更新.查询时将发生对视图的更新.因此,如果您要进行大量的文档更改,那么您应该期望索引增长,并且需要通过压缩和清理来管理.
如果您对一组给定文档的视图非常大,那么您可能设计的视图设计不佳.或者,您的设计可能只需要大量视图,您将需要像管理任何其他资源一样进行管理.
如果您可以描述正在发生的文档更新(包括创建和删除)以及您的视图函数正在发出的内容,尤其是对于大视图,则更容易分辨出发生了什么.
小智 7
每次访问视图时,.view文件都会增长,因为CouchDB会更新访问视图.CouchDB视图也需要像数据库一样压缩.如果您经常更改文档,导致视图发生更改,则应不时运行视图压缩.请参阅http://wiki.apache.org/couchdb/HTTP_view_API#View_Compaction
要减少视图的大小,请查看数据,然后发出.当您发出(foo,doc)时,整个文档被复制到视图中,当您查询视图时,它立即可用.函数(doc){emit(doc.title,doc); 将导致视图与数据库本身一样大.你也可以发射(doc.title,nil); 并使用include_docs选项让CouchDB在访问视图时从数据库中获取文档(这会导致性能略有下降).请参阅http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options