【发布时间】:2017-07-28 14:51:29
【问题描述】:
我的查询最多可能返回 2000 个文档。 在这些文档中,我需要六个 pcdata 项作为字符串值返回。 有可能,因为文件大小从小到大, exp树缓存错误。
我正在查看 spawn-function 来分解我的结果集。 我将根据已知的“唯一键结构”传递通配符值,并知道可能的最大结果数;每个通配符值最多返回 100 个文档。 注意:唯一键结构的 pcdata 上确实有一个范围索引。
我在下面的正确轨道上吗? 任务服务器将创建三个任务。 任务服务器将允许运行多个查询,但是是什么阻止了它们同时运行并耗尽了 exp 树缓存? 即,如果有的话,什么会迫使一个线程等待另一个线程?还是一个任务等待另一个任务,这样它们就不会一起炸毁 exp 树缓存?
xquery version "1.0-ml";
let $messages :=
(:each wildcard values will return 100 documents max:)
for $message in ("WILDCARDVAL1","WILDCARDVAL2", "WILDCARDVAL3")
let $_ := xdmp:log("Starting")
return
xdmp:spawn-function(function() {
let $_ := xdmp:sleep(5000)
let $_ := xdmp:log(concat("Searching on wildcard val=", $message))
return concat("100 pcdata items from the matched documents for ", $message) },
<options xmlns="xdmp:eval">
<result>true</result>
<transaction-mode>update-auto-commit</transaction-mode>
</options>)
return $messages
【问题讨论】: