Marklogic - 何时清除已删除的片段?
Marklogic - When Deleted Fragments will be cleaned up?
MarkLogic 版本 9.0-7.2
我们在 MarkLogic 中有 600 万条记录,根据业务需求和源文档可用性定期进行摄取和索引。
我们观察到所有 3 个节点的使用磁盘大小差异很大(大约 30 GB),我们可以开始调查。在 Monitor -> Disk usage 仪表板上也有较低的磁盘警告和错误。
经过调查,我们发现这是因为在某些节点上,与其他节点相比,删除的碎片数量较少,并且假设这是使用磁盘大小差异的主要原因。
那么 2 个问题
- 如何清理包括副本在内的所有林中已删除的碎片?
- 有什么触发器可以用来清理吗?
- 为什么主林与副本相比有大量删除的片段?
删除的碎片由"merge"进程清理,该进程与删除碎片的事务异步。合并在概念上类似于垃圾收集。您可以使用 xdmp:merge
, and you can control how aggressive the server is at automatic merging by adjusting the reindexer throttle setting merge policy settings 为您的数据库强制合并以编程方式开始。
删除的片段作为合并过程的一部分被清除,这是 dynamic tuning MarkLogic 用来优化性能的过程。
数据库的合并优先级设置将决定合并的 CPU 调度优先级。如果它设置为 lower
,则服务器将使用较低优先级的调度程序来确定何时合并 运行。这意味着如果您的服务器看到 activity 的恒定级别,它可能会影响系统能够进行的合并量。提高Merge Priority级别将允许系统进行更多合并,这将清除更多已删除的片段。
原始森林通常会看到更高的 activity,因为它们看到查询流量以及更新和删除。然后将日志框架复制到副本林。我对此的理解是,针对副本的工作负载可能较低,因此它可以获得更多低优先级 CPU 周期进行合并。
查看文档的 Understanding and Controlling Database Merges 部分了解更多详细信息。
也可以在林级别或数据库级别手动触发合并。 Manually Initiating a Merge。谨慎启动完整的数据库级合并,因为它可能会占用大量资源,并且会在合并 运行 期间对 query/ingest 性能产生负面影响。
如果您确定默认设置不符合您的要求,您还可以调整合并设置。 Configuring Merge Policy Rules
MarkLogic 版本 9.0-7.2
我们在 MarkLogic 中有 600 万条记录,根据业务需求和源文档可用性定期进行摄取和索引。
我们观察到所有 3 个节点的使用磁盘大小差异很大(大约 30 GB),我们可以开始调查。在 Monitor -> Disk usage 仪表板上也有较低的磁盘警告和错误。
经过调查,我们发现这是因为在某些节点上,与其他节点相比,删除的碎片数量较少,并且假设这是使用磁盘大小差异的主要原因。
那么 2 个问题
- 如何清理包括副本在内的所有林中已删除的碎片?
- 有什么触发器可以用来清理吗?
- 为什么主林与副本相比有大量删除的片段?
删除的碎片由"merge"进程清理,该进程与删除碎片的事务异步。合并在概念上类似于垃圾收集。您可以使用 xdmp:merge
, and you can control how aggressive the server is at automatic merging by adjusting the reindexer throttle setting merge policy settings 为您的数据库强制合并以编程方式开始。
删除的片段作为合并过程的一部分被清除,这是 dynamic tuning MarkLogic 用来优化性能的过程。
数据库的合并优先级设置将决定合并的 CPU 调度优先级。如果它设置为 lower
,则服务器将使用较低优先级的调度程序来确定何时合并 运行。这意味着如果您的服务器看到 activity 的恒定级别,它可能会影响系统能够进行的合并量。提高Merge Priority级别将允许系统进行更多合并,这将清除更多已删除的片段。
原始森林通常会看到更高的 activity,因为它们看到查询流量以及更新和删除。然后将日志框架复制到副本林。我对此的理解是,针对副本的工作负载可能较低,因此它可以获得更多低优先级 CPU 周期进行合并。
查看文档的 Understanding and Controlling Database Merges 部分了解更多详细信息。
也可以在林级别或数据库级别手动触发合并。 Manually Initiating a Merge。谨慎启动完整的数据库级合并,因为它可能会占用大量资源,并且会在合并 运行 期间对 query/ingest 性能产生负面影响。
如果您确定默认设置不符合您的要求,您还可以调整合并设置。 Configuring Merge Policy Rules