内存映射消耗了多少?

时间:2012-05-01 21:02:27

标签: marklogic

我有一个用于生成报告的xquery,它在地图中有时会保存大约500K uris,并在数据库中检查它们的存在(cts:searchcts:document-query)并返回差异。但是,如果我们使用并发请求命中相同的E节点,则响应时间会变慢。

地图可以消耗的内存大小是否有上限? 在任何情况下都可以将地图交换到磁盘吗?

2 个答案:

答案 0 :(得分:2)

您可以将地图作为xml存储在数据库本身中,但仍需要将其加载到内存中才能使用它。您也可以将它们存储为服务器字段,但仍需要将其加载到内存中。但是,如果用500k条目构建地图需要相当长的时间,那么可能值得这样做。另一方面,你如何跟踪地图是最新的?

答案 1 :(得分:0)

您可以查看每个林与管理服务器一起使用的内存量。转到林,单击状态选项卡,然后向下滚动到底部。 “内存大小”是映射文件大小的总和。您还可以使用xdmp:forest-status在XQuery程序中收集此信息。

内存消耗受操作系统的地址空间和虚拟内存限制(可用交换空间)的限制。如果服务器内存消耗超出可用物理内存,则操作系统会将页面交换到磁盘。这会对性能产生严重影响。因此,请监视操作系统交换利用率,看看这是否是导致速度放缓的原因。