2

我想了解启用 CPF - 内容处理框架对 Marklogic 4.2.9 服务器的影响。我们有一个 3TB 大小的生产数据库,我们正在研究需要执行多项操作的各种内容丰富和内容删除任务。我曾在以前的项目中创建 CFP 管道,但在我当前的项目中,数据库当前已禁用 CPF。我想了解的是,当/如果我们在此数据库上启用 CPF,将对 1. Marklogic 内存使用 2. 磁盘空间 3. 整体性能 4. IO 等产生什么影响 我们试图创建的管道将影响数据库中存在的所有/任何文档。

谢谢您的帮助!!!

4

2 回答 2

3

我认为@mblakele 很好地涵盖了对内存和磁盘的影响。但我想就 CPF 的工作原理补充几句。这可能有助于了解 CPF 通常如何影响性能。

CPF 依赖于 MarkLogic 的触发机制。任何文档插入、更新和删除都会通过初始状态转换激活 CPF 处理。每个动作都会导致额外的状态转换。每个状态转换都涉及到提交后触发器的执行,调用一些 CPF 内部代码来执行实际操作模块的 xdmp:invoke。因此,如果您有一个插入 100 个文档的事务,这会导致 100 个提交后任务在任务服务器队列中排队等待启动。而且我担心 xdmp:invokes 会导致另外 100 个任务排队。如果文档平均遍历三个状态,则该数字至少乘以三。

换句话说,CPF 对任务服务器队列的影响很大。实际影响性能的程度可能取决于您已经使用任务服务器的程度。任务服务器上的任何非 CPF 任务都将被 CPF 任务延迟。另一方面,如果您目前并没有真正使用任务服务器,您可能不会注意到这一点。应用服务器请求在单独处理的应用服务器队列上运行。

另一件事是 CPF 单独处理文档。这对于缓慢而有弹性的后台处理是理想的。但如果您需要速度,最好为批量文档创建事务。

于 2013-01-09T20:51:08.363 回答
2

如果您已经maintain-last-modified启用,对内存和磁盘空间的影响将是最小的。如果maintain-last-modified禁用,CPF 将在文档被触摸时创建新的属性片段。由此您可以期望使用额外的内存和磁盘空间,每个文档可能需要大约 100-B 的内存和 1-kB 的磁盘空间。额外的碎片也可能对 I/O 和整体性能产生影响,但预测其程度需要对应用程序及其查询有更深入的了解。

于 2013-01-09T20:04:59.477 回答