Couchbase索引视图过于频繁

时间:2016-12-13 11:45:01

标签: couchbase couchbase-view

我经常访问Couchbase视图(每分钟 - 通过线程运行),使用带有Stale参数的Java 2.1 SDK作为 FALSE 。有时我可以看到索引卡住了很长时间。我应该从代码中删除陈旧参数还是减少频繁访问视图?顺便说一句,每分钟都没有批量插入/更新。我附上了屏幕截图enter image description here

2 个答案:

答案 0 :(得分:2)

首先,我认为您应该确定您的查询确实需要一致性。 因为stale=false会使Couchbase在请求到来时始终重建索引。

from "Learning Couchbase"

  

当客户端在stale参数中使用false值时,它会指示Couchbase在提供请求之前希望重建视图,以防万一在存储桶中有任何更改或添加文档。但是,请记住,这会延迟服务请求,因为Couchbase需要在响应请求之前重建索引。如果您在使用视图从存储桶中提取文档时始终需要最新信息,则可以使用此选项。例如,如果要从每个商店的包含销售的凭证中查找特定日期的最大销售额。在这种情况下,我们需要考虑在存储桶中创建的所有文档,包括RAM中但尚未泄漏到磁盘上的文档。

from couchbase doc

  

如果多个客户端请求在返回信息之前更新视图(stale = false),则可以堆叠索引更新。然后,多个客户端更新和查询索引数据可以每次获取更新的文档和视图版本。对于stale = update_after查询,没有堆叠,因为在访问查询后发生所有更新。

答案 1 :(得分:1)

根据您实际使用数据的方式(更具体地说 - 将新数据写入couchbase的频率),也许最好关闭“陈旧”标志(如CodeDreamer在另一个答案中所建议的那样)和此外,确保在每次插入后重新计算视图(而不是在非常拉动之前)。

你可以通过在每次插入后用stale = true人工查询数据来实现这一点(但仅限于此)。最终结果将是一个大致一致的查询结果,特别是如果你的写入很少,读取速度相对较快(因为在大多数情况下,视图已被索引)。