Marklogic-何时清除已删除的碎片?

时间:2019-09-17 07:31:10

标签: marklogic resource-cleanup

MarkLogic 9.0-7.2版

我们在MarkLogic中有600万条记录,并且根据业务需求和来自源的文档可用性定期进行提取和索引编制。

我们观察到所有3个节点的使用磁盘大小(差异和差异都足够大)(大约30 GB)足以让我们开始调查。另外,在“监视器”->“磁盘使用情况”仪表板上的位置也有较低的磁盘警告和错误。

经过调查,我们发现这是因为某些节点上的已删除片段数少于其他节点,并假定这是使用磁盘大小差异的主要原因。

所以有2个问题

  • 如何清理所有林(包括副本)中已删除的片段?
    • 我们有什么办法可以清理吗?
  • 为什么主林与副本林相比有大量已删除的片段?

enter image description here

2 个答案:

答案 0 :(得分:3)

已删除的片段在合并过程中被清除,这是MarkLogic用于优化性能的dynamic tuning过程。

数据库的“合并优先级”设置将确定合并的CPU调度优先级。如果将其设置为lower,则服务器将使用优先级较低的调度程序来确定何时运行合并。这意味着,如果服务器的活动水平恒定不变,则可能会影响系统能够合并的数量。增加“合并优先级”级别将使系统可以进行更多合并,这将清除更多已删除的片段。

主林通常会看到较高的活动,因为它们看到查询流量以及更新和删除。然后将日记帐帧复制到副本林。我的理解是,副本服务器上的工作负载可能较低,因此合并时可以获得较低的优先级CPU周期。

查看文档的Understanding and Controlling Database Merges部分以了解更多详细信息。

还可以在林级别或数据库级别手动触发合并。 Manually Initiating a Merge。请谨慎启动完整的数据库级合并,因为这可能会占用大量资源,并且在合并运行时会对查询/初始性能产生负面影响。

如果您确定默认设置不符合您的要求,也可以调整合并设置。 Configuring Merge Policy Rules

答案 1 :(得分:2)

已删除的片段由“合并”进程清除,该过程与删除片段的事务异步。合并在概念上类似于垃圾回收。您可以通过xdmp:merge强制以编程方式开始合并,并且可以通过调整数据库的 reindexer调节器设置 merge policy settings来控制服务器在自动合并中的积极程度。

相关问题