0

我在 MarkLogic 中有一个实体,其中存在大约 98k+ 文档 ( /someEntity/[ID].xml),我有一种情况,我必须在所有这些文档中添加一些新标签。

我准备了一个查询来添加子节点,然后尝试针对接收扩展树缓存已满的实体运行。我将缓存内存增加到几场演出,它可以工作并且需要很长时间才能完成。也试过了xdmp:clear-expanded-tree-cache(),它也行不通。

任何指针我们如何获取 10k 块中的 URL 并进行处理,这样它就不会占用内存,也不会在查询处理一段时间后抛出错误。

4

1 回答 1

2

点击扩展的树缓存听起来就像您将完整的结果集保存在某个地方,这听起来没有必要。可能有一些方法可以让你的代码更智能,让它在结果中流动,并尽快忘记事情。作为经验法则:不要将完整的结果集分配给 let 语句。

但是,有时将工作批量处理会更容易。正如 Michael Gardner 所建议的那样, Corb是一个很好的选择。它可以从外部限制 MarkLogic 上的负载,并在需要时降低其速度。

对于像这样的较小任务,taskbot之类的东西也可以做到这一点,尽管它更难控制它的速度。

于 2019-11-26T19:49:05.563 回答