Пакетная обработка - это правильный вариант для выполнения задач такого типа. Используйте функцию xdmp:spawn-function()
для одновременного размещения нескольких задач на сервере задач. Вам просто нужно указать количество записей, которые ваш запрос может завершить в течение 10 минут или 1 часа, как вам требуется.
Например, если запрос может выполнить 5000 записей в течение 10 минут:
let $total-records := xdmp:estimate(collection())
let $batch-size := 5000
let $pagination := 0
for $records in 1 to fn:ceiling($total-records div $batch-size )
let $start := fn:sum($pagination + 1)
let $end := fn:sum($batch-size + $pagination)
let $_ := xdmp:set($pagination, $end)
return
xdmp:spawn-function
(
function(),
for $each in cts:uri-match("/data/employee/*")[$start to $end]
return xdmp:document-set-collections($each, "employee")
)