我正在this site的Couchbase上阅读并发现。我对索引有较高的了解,但仅此而已。第二行同样难以理解。
The primary index, like every other index in Couchbase, is maintained asynchronously. You set the recency of the data by setting the consistency level for your query
答案 0 :(得分:2)
这意味着当文档存储在Couchbase中时,会将其放入要索引的队列中。写入操作不等待索引完成。想象一下您的应用程序的情况:
{'type': 'invoice', 'foo':'bar', ... etc ... }
SELECT * FROM mybucket WHERE type = 'invoice'
一个过于简单的解释:在步骤1之后,文档A将排队等待索引。在步骤2中,N1QL没有绑定(默认情况下,SDK /服务器将没有绑定),可以返回文档A,因为还没有索引 。如果您的情况需要,可以指定RequestPlus(或AtPlus)而不是NotBounded。这将使您的查询在执行查询之前等待索引完成。
使用RequestPlus的C#示例:
var request = QueryRequest.Create("SELECT * FROM mybucket WHERE type = 'invoice'");
request.ScanConsistency(ScanConsistency.RequestPlus);
这确实对性能有影响! RequestPlus将是最差的性能,NonBounded将是最好的性能,AtPlus将处于中间位置。
请注意,如果您使用键/值访问而不是N1QL,则不必为此担心。无论索引如何,您始终可以直接通过其键访问文档。
有关更多信息: