首页 > 解决方案 > 当我尝试在 MarkLogic 中删除集合时出现超时错误

问题描述

我正在尝试使用该xdmp:collection-delete函数通过查询控制台删除 MarkLogic 中的集合,但出现超时异常:

SVC-EXTIME: xdmp:collection-delete("") -- 超出时间限制"

该集合包含大约 150,000 个文档,并且是小型文档。有人可以帮忙吗?

管理控制台中的时间设置为 3600。我尝试使用 xdmp:spawn-function 批量删除它,但出现语法错误:

“意外的 Lbrace_,期待 Comma_ 或 Rpar_”:xquery 版本“0.9-ml”将变量 $uriMatch 定义为 xs:string {"/sortkey-257-2019*"} let $_ := for $uri in cts:uri-match ($uriMatch) return if(doc-available($uri)) then (xdmp:spawn-function(function(){ xdmp:collection-delete(xdmp:document-get-collections($uri)),xdmp:commit( )} , 更新 )) 否则 () 返回 $_

PFB,返回 XDMP:MAX-TASKS 异常的查询:xquery version "1.0-ml";让 $uriMatch:="/snapshot-257-2019*"

for $uri in cts:uri-match($uriMatch) return if(fn:doc-available($uri)) then let $x:=
xdmp:spawn-function(function(){ xdmp:collection-delete(xdmp: document-get-collections($uri)),xdmp:commit()}, update) return $x else xdmp:log("没有文档在集合中")

标签: xquerymarklogic

解决方案


有几种不同的方法可以解决 SVC-EXTIME 问题。

  1. 更改事务或请求的超时设置(取决于调用方式)。

xdmp:set-request-time-limit(3600)

或者:

xdmp:set-transaction-time-limit(3600)

  1. 将删除分成批次

  2. 使用CoRB执行删除


推荐阅读