在_design文档更新后,couchdb视图更新缓慢:

时间:2013-06-10 09:38:11

标签: performance couchdb

我正在处理一个couchdb数据库,我现在正在处理或多或少的400000个文档。

我有几个视图(只有map,no reduce),当我想用​​couchapp更新其中一个时,我会被迫更新所有视图。 事实上,正如How to update a document's record/field in couchdb所述,不可能只更新文档的PART。

由于数据库有很多文档,所有视图的内部更新(构建b树)需要相当长的时间(超过半小时)。

这是一个非常烦人的问题,因为在部署阶段我无法挂起服务器只更新一个或两个视图。

那么,这是一个很好的策略来更新一个或两个视图而不强制couchdb更新所有视图?

也许有办法告诉系统只更新其中的一些......但我不知道如何。

1 个答案:

答案 0 :(得分:3)

单个设计文档中的所有视图在保存到CouchDb后会更新。视图按需更新(查询时),除非您想要更改视图的性质,否则无需正常更新它们。您可以使用多个设计文档,因此可以使用视图来更好地控制更新视图代码的结果。

在查询任何单个视图时,设计文档中的所有视图都是updated,因此在决定设计文档和视图的结构时考虑这一点很重要。但是,要控制此行为,可以包含stale参数以指示视图可以返回旧数据。从上面链接的页面上的文档:

  

如果设置了stale=ok,CouchDB即使过时也不会刷新视图,这样可以提高查询延迟。如果设置了stale=update_after,CouchDB将在返回过时结果后更新视图。