Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Couchbase N1ql查询在Java中急切获取_Java_Spring_Couchbase - Fatal编程技术网

Couchbase N1ql查询在Java中急切获取

Couchbase N1ql查询在Java中急切获取,java,spring,couchbase,Java,Spring,Couchbase,我有一个Java Couchbase n1ql查询,如下所示: N1qlQueryResult result = bucket.query(N1qlQuery.simple(sql), queryTimeout, TimeUnit.MILLISECONDS); 不幸的是,在某些情况下,此查询可能返回许多行,然后需要进行迭代。这花费了很长时间,因为文档似乎是在偷懒地获取的。我想实现急切地获取文档,我收集这些文档意味着将includeDocs设置为true 如何将查询设置为立即获取,或将get b

我有一个Java Couchbase n1ql查询,如下所示:

N1qlQueryResult result = bucket.query(N1qlQuery.simple(sql), queryTimeout, TimeUnit.MILLISECONDS);
不幸的是,在某些情况下,此查询可能返回许多行,然后需要进行迭代。这花费了很长时间,因为文档似乎是在偷懒地获取的。我想实现急切地获取文档,我收集这些文档意味着将
includeDocs
设置为true


如何将查询设置为立即获取,或将get batch size设置为一个较大的数字?

要将性能平分,可以尝试更改sql以仅选择meta().id。另外,在控制台中检查查询的解释,查看它是否使用了主索引以外的索引

在这种情况下,没有批量大小或即时获取。所有这些细节都由查询引擎处理。SDK发送请求,查询引擎将结果流化。SDK中有一个流解析器来处理传入的行,但这通常不是主要的


您可以做的另一件事是检查返回的度量。比较在客户机上观察到的时间和在查询引擎上使用的记录会很好。请参阅或(可能需要在查询中启用)。

要平分性能,可以尝试更改sql以仅选择meta().id。另外,在控制台中检查查询的解释,查看它是否使用了主索引以外的索引

在这种情况下,没有批量大小或即时获取。所有这些细节都由查询引擎处理。SDK发送请求,查询引擎将结果流化。SDK中有一个流解析器来处理传入的行,但这通常不是主要的


您可以做的另一件事是检查返回的度量。比较在客户机上观察到的时间和在查询引擎上使用的记录会很好。请参阅或(可能需要在查询中启用)。

延迟获取是什么意思?你是如何得出这个结论的?@deniswsrosa-要花几个小时才能看完这个列表。我不是百分之百确定这是原因,但相当肯定。然而,我100%确定我无法像在其他JPA框架中一样,设置fetch大小或参数来加载结果。如果我能做到这一点,那么我可以100%肯定。如果可能的话,我建议您尝试使用反应式API,这样即使您有很多结果,文档到达时也会流式传输。但我怀疑couchbase是否有懒惰/急切的配置。毕竟,它是一个文档数据库,所以除了响应的大小之外,没有额外的成本。@deniswsrosa-你可能是对的,我只是找不到任何明确的方法。我知道,
ViewQuery
有一个名为includeDocs的方法,它强制进行急切的实例化。也许这一概念不适用于查询,因为正如您所说,对于快速加载没有时间限制。
includeDocs
不适用于N1qlQuery。实际上可能会有额外的成本,因为在这种情况下,这取决于查询引擎如何满足请求。如果可以从一个覆盖索引执行,那么查询引擎就不需要KV获取。您所说的延迟获取是什么意思?你是如何得出这个结论的?@deniswsrosa-要花几个小时才能看完这个列表。我不是百分之百确定这是原因,但相当肯定。然而,我100%确定我无法像在其他JPA框架中一样,设置fetch大小或参数来加载结果。如果我能做到这一点,那么我可以100%肯定。如果可能的话,我建议您尝试使用反应式API,这样即使您有很多结果,文档到达时也会流式传输。但我怀疑couchbase是否有懒惰/急切的配置。毕竟,它是一个文档数据库,所以除了响应的大小之外,没有额外的成本。@deniswsrosa-你可能是对的,我只是找不到任何明确的方法。我知道,
ViewQuery
有一个名为includeDocs的方法,它强制进行急切的实例化。也许这一概念不适用于查询,因为正如您所说,对于快速加载没有时间限制。
includeDocs
不适用于N1qlQuery。实际上可能会有额外的成本,因为在这种情况下,这取决于查询引擎如何满足请求。如果可以从覆盖索引执行,那么查询引擎就不需要KV fetch。