我很好奇CouchDB视图API的stale=update_after
功能如何运作。
我可以看到here它返回陈旧的结果,然后更新视图:
如果设置了stale = ok,CouchDB即使过时也不会刷新视图,这样可以提高查询延迟。如果设置了stale = update_after,CouchDB将在返回过时结果后更新视图。在版本1.1.0中添加了update_after。
假设我插入了大量文档 - 足以需要几分钟来更新视图索引 - 然后我使用stale=update_after
快速连续查询视图两次。第一个查询将很快返回;这是update_after
的重点。
我的问题是,第二个查询是否会快速返回陈旧的结果,还是会等待视图完成更新?
答案 0 :(得分:6)
第二个查询也会返回过时的结果。它使用查询命中服务器时可用的部分结果。如果您刚刚添加了文档,那就没事了。
但是如果您修改了视图,第一个查询将返回第一个查询的结果并触发视图的完整重建。因此,第二个查询可能不会产生任何结果,也可能只会产生很少的行。
所以答案很简单:在你的情况下,两个查询都会快速返回,第二个查询可能会给出与第一个查询相同的结果,也许会有一些额外的行。
希望我能帮忙!
你的,伯恩哈德