如果我们第一次调用某个xquery
模块需要一些时间。后续的调用调用更快可能是因为xquery
模块被解析并出现在模块缓存中。
请考虑以下情况: -
HTTP Server1- xdmp:invoke('/a/sample.xqy')
HTTP Server2 - xdmp:invoke('/a/sample.xqy')
两个应用服务器都指向相同的模块数据库。
问题: -
为什么后续的调用会更快?
但是,如果我们在diff app server中调用相同的模块,则调用很慢。对于缓存目的,此xquery模块是否会被视为基于appserver的单独对象?
MarkLogic如何决定退出模块缓存的条目?
Mark xdmp:invoke
调用后,模块在缓存中保留多长时间?
是否有任何ML配置可以增加模块缓存大小?
答案 0 :(得分:3)
答案 1 :(得分:0)
查询是否涉及数据库中的数据?如果是这样,后续对同一查询的调用可能是在第二次调用时访问E节点中的Expanded树缓存。
第二次通话要快多少?上次我测量它时,与大多数I / O解决方案上的查找时间相比,查询评估时间的差异很小。
答案 2 :(得分:0)
<强> 1。缓存: - 有三种缓存 - 扩展树,压缩树,list.Expanded树存储最近使用一个然后压缩然后列表。 ML文件很好地解释了它。
2. 如果第二个应用服务器位于同一个组中,那么理想情况下它不应该花费更多时间。如果它在一个不同的群体,那么它将需要时间。因为缓存是在组级别完成的。
3。最近使用的将是扩展树chache,最近最少使用的将在列表缓存中。最近未使用的将从缓存中刷新。
4. 请参阅第3点
5. 是的,请转到管理员 - &gt; group - &gt;选择你的论坛---&gt;配置选项卡。