当前,我们正在尝试使用xdmp:spawn-function
(以“ query”作为事务类型)来提高性能。因此,假设有一个搜索条件,我们有90个文档,我将其分为3批,每批30条记录。现在,我在xdmp:spawn-function
中发送30个记录ID并进行处理。最终我累积了3个批次的数据。这样我就能获得良好的表现。但是我们担心它可能会对集群的任务服务器中的某些线程产生负面影响。
能否请您提出一些建议以避免产生并仍然具有并行处理能力?
答案 0 :(得分:2)
您可以使用xdmp:spawn-function
并赋予某些任务比使用options的任务低/高的优先级。您可以将批处理的优先级设置为正常,将更关键的任务设置为优先级,以防止在任务服务器中等待。
或者,如果您为要批处理的数据建立索引,则可以使用聚合函数来累积数据,并且这些函数在整个集群中并行执行。有很多内置的聚合函数,例如max / min,sum等。如果没有所需的聚合函数,也可以编写您自己的:https://docs.marklogic.com/guide/app-dev/aggregateUDFs