xdmp:在MarkLogic中调用调用

时间:2012-06-18 20:18:52

标签: marklogic

如果我们第一次调用某个xquery模块需要一些时间。后续的调用调用更快可能是因为xquery模块被解析并出现在模块缓存中。

请考虑以下情况: -

HTTP Server1- xdmp:invoke('/a/sample.xqy')   
HTTP Server2 - xdmp:invoke('/a/sample.xqy') 

两个应用服务器都指向相同的模块数据库。

问题: -

  1. 为什么后续的调用会更快?

  2. 但是,如果我们在diff app server中调用相同的模块,则调用很慢。对于缓存目的,此xquery模块是否会被视为基于appserver的单独对象?

  3. MarkLogic如何决定退出模块缓存的条目?

  4. Mark xdmp:invoke调用后,模块在缓存中保留多长时间?

  5. 是否有任何ML配置可以增加模块缓存大小?

3 个答案:

答案 0 :(得分:3)

  1. 缓存 - 但我想你知道吗?
  2. 听起来你已经证明了这一点。这是有道理的:不同的应用服务器可能具有可能影响评估的不同配置:例如,名称空间和模式,以及可能的输出选项。因此,将app-server id构建到缓存键中可能更简单。
  3. 我相信这是一个LRU缓存。我不知道它有多大。
  4. 直到空间不足,或者更新使缓存条目无效。
  5. 据我所知。

答案 1 :(得分:0)

查询是否涉及数据库中的数据?如果是这样,后续对同一查询的调用可能是在第二次调用时访问E节点中的Expanded树缓存。

第二次通话要快多少?上次我测量它时,与大多数I / O解决方案上的查找时间相比,查询评估时间的差异很小。

答案 2 :(得分:0)

<强> 1。缓存: - 有三种缓存 - 扩展树,压缩树,list.Expanded树存储最近使用一个然后压缩然后列表。 ML文件很好地解释了它。

2. 如果第二个应用服务器位于同一个组中,那么理想情况下它不应该花费更多时间。如果它在一个不同的群体,那么它将需要时间。因为缓存是在组级别完成的。

3。最近使用的将是扩展树chache,最近最少使用的将在列表缓存中。最近未使用的将从缓存中刷新。

4. 请参阅第3点

5. 是的,请转到管理员 - &gt; group - &gt;选择你的论坛---&gt;配置选项卡。