MarkLogic:Optics API不稳定耗时/运行时间

MarkLogic:Optics API不稳定耗时/运行时间,marklogic,marklogic-9,Marklogic,Marklogic 9,我一直在使用MarkLogic Optics API功能,并注意到完成代码执行所需的时间不稳定,可能需要40秒或~1-2分钟才能完成,有时还需要一个多小时才能激活超时错误 这是由于缓存或我可能遗漏的特定设置造成的吗?或者低运行时间是由于以前失败/不完整执行的缓存造成的?我在下面发布了我的一组代码,因为这可能有助于进行故障排除 import module namespace op="http://marklogic.com/optic" at "/MarkLogic/optic.xqy"; imp

我一直在使用MarkLogic Optics API功能,并注意到完成代码执行所需的时间不稳定,可能需要40秒或~1-2分钟才能完成,有时还需要一个多小时才能激活超时错误

这是由于缓存或我可能遗漏的特定设置造成的吗?或者低运行时间是由于以前失败/不完整执行的缓存造成的?我在下面发布了我的一组代码,因为这可能有助于进行故障排除

import module namespace op="http://marklogic.com/optic" at "/MarkLogic/optic.xqy";
import module namespace ofn="http://marklogic.com/optic/expression/fn" at "/MarkLogic/optic/optic-fn.xqy";
import module namespace thsr="http://marklogic.com/xdmp/thesaurus" 
   at "/MarkLogic/thesaurus.xqy";

xdmp:set-transaction-time-limit(3600),
let $people := op:from-lexicons(
  map:entry("comments",cts:uri-reference()),
  "lexicon")
  =>op:where(
   thsr:expand(
   cts:element-word-query(xs:QName("text"),"go"), 
   thsr:lookup("/myThsrDocs/wordnet.xml", "go"),
   (), 
   (), 
   () )
  )

let $questions := op:from-sparql('SELECT * WHERE {?comment </date_commented> ?date. }', "sparql")
                => op:select(( "date", op:as('commentStr',ofn:string(op:col('comment'))) ))

return(
xdmp:elapsed-time(),
$questions  => op:join-inner(
    $people,
    op:on(
      "comments","commentStr"
    )
  )
  => op:select(("comments")) 
  => op:group-by((), op:count("Total","comments"))
  => op:result()
,
xdmp:elapsed-time()
)

这可能是由于选择了不同的查询计划,并表示成本函数中可能存在错误。您应该与MarkLogic支持部门合作,追踪问题并为其打开一个bug。

上面的好建议的脚注:尝试在op:result调用之前插入=>op:prepare2,看看是否多花一点时间优化计划会减少时间上的可变性。我试过你的建议,但似乎没有用。相反,它还会导致以下错误[1.0-ml]SVC-EXTIME:plan:executeplan:sparql…,,-超出时间限制。在执行一些运行之后,我注意到当我运行查询的节点在运行一定时间后似乎没有处理任何内容时,会出现超时。它通常从100%的CPU使用率开始,然后突然下降到~0.3%-15%的CPU使用率@ehennumIt。当我的所有节点都以100%的CPU使用率运行时,它似乎也会很快完成。我是否可以选择强制MarkLogic使用我所有的资源?鉴于使用prepare优化计划不起作用,最好的方法是:将问题提交给MarkLogic支持部门,以争取其他人参与调查。