gpt4 book ai didi

caching - 需要帮助重写 XQuery 以避免 MarkLogic 中扩展树缓存已满错误

转载 作者:行者123 更新时间:2023-12-01 22:01:19 25 4
gpt4 key购买 nike

我是 XQuery 和 MarkLogic 的新手。我正在尝试更新 MarkLogic 中的文档并收到扩展树缓存已满错误。为了完成工作,我增加了扩展树缓存,但不建议这样做。我想调整这个查询,以便它不需要同时缓存尽可能多的 XML。

这是我的查询enter image description here

我已将查询作为图像上传,因为当我将其粘贴到编辑器上时它不太漂亮。如果有人知道更好的方法请建议。

提前致谢。

最佳答案

执行一次选择太多 XML 节点的查询可能会导致扩展树缓存错误。在您的示例中,这可能是罪魁祸首: /tx:AttVal[tx:AttributeName/text()=$attributeName]

有可能调用 text()是问题的根源(并且 text() 可能不是您的意思 - 请参阅 this blog ),导致 MarkLogic 在所有这些节点上评估该函数,并且只需使用 /tx:AttVal[tx:AttributeName=$attributeName] 即可它可能会解决你的问题。

接下来我会考虑在 /tx:AttVal/tx:AttributeName 上添加路径范围索引并使用 cts:search 查询这些节点和cts:path-range-query 。这将比没有范围索引的 XPath 快得多。还可以将 XPath 与范围索引一起使用:MarkLogic 将自动优化 XPath 表达式以使用范围索引;但是,可能存在无法正确优化表达式的原因,您需要使用 xdmp:plan 进行检查。 .

另请注意,MarkLogic 中 XML 的一般最佳实践建议是使用“语义 XML”。例如,当您指的是属性时,请使用属性:<some-node AttributeName=AttVal> 。 MarkLogic 的索引针对语义 XML 设计进行了开箱即用的优化。但是,如果您别无选择,只能使用 XML,那么这就是路径范围索引的设计目的。

关于caching - 需要帮助重写 XQuery 以避免 MarkLogic 中扩展树缓存已满错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23016289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com