为什么MarkLogic中启用CPF的数据库中的文档插入速度慢?

为什么MarkLogic中启用CPF的数据库中的文档插入速度慢?,marklogic,Marklogic,我有一个MarkLogic 7服务器,试图在其中插入文档 在未安装CPF的数据库中插入10000文档时,需要2.18秒,如下所示: 现在,我在数据库本地db上安装CPF,启用转换为false: 在此之后,我将默认域范围设置为collectiontasks,然后插入10000文档。现在需要3分35秒 有人能帮我理解为什么插入文档要花这么长时间吗 是否有任何选项可以对此进行优化?CPF通过一系列提交前和提交后触发器工作,从而为系统增加额外的负载。转换本身将在提交后触发器中发生 您可以尝试的一件事是

我有一个MarkLogic 7服务器,试图在其中插入文档

  • 在未安装CPF的数据库中插入10000文档时,需要2.18秒,如下所示:

  • 现在,我在数据库本地db上安装CPF,启用转换为false:

  • 在此之后,我将默认域范围设置为collectiontasks,然后插入10000文档。现在需要3分35秒

  • 有人能帮我理解为什么插入文档要花这么长时间吗


    是否有任何选项可以对此进行优化?

    CPF通过一系列提交前和提交后触发器工作,从而为系统增加额外的负载。转换本身将在提交后触发器中发生


    您可以尝试的一件事是更小的提交批。如果您进行10个事务处理,每个事务处理1000个文档,是否会更改时间?如果是这样,您可以尝试使用批处理大小来优化以获得最佳性能。

    CPF通过一系列提交前和提交后触发器工作,从而为系统增加额外的负载。转换本身将在提交后触发器中发生


    您可以尝试的一件事是更小的提交批。如果您进行10个事务处理,每个事务处理1000个文档,是否会更改时间?如果是这样,您可以尝试使用批处理大小来优化最佳性能。

    CPF触发器可能足以解释这种差异。但也要检查操作系统,看看瓶颈是什么:可能是CPU或磁盘I/O。检查以确保在事务处理过程中没有内存压力。如果操作系统正在调出,这将严重影响性能。

    CPF触发器可能足以解释这种差异。但也要检查操作系统,看看瓶颈是什么:可能是CPU或磁盘I/O。检查以确保在事务处理过程中没有内存压力。如果操作系统正在调出页面,这将严重影响性能。

    还请注意,CPF的设计不是为了快速,而是为了健壮。CPF构建在触发器之上,它将导致对每个文档执行多个触发器。它跟踪文档属性中的状态,因此还创建其他数据库片段。所有这一切都使它能够在重新启动后存活下来,如果您有很多处理,您需要确保在不亲自照看的情况下完成这些处理,这一点尤其有用

    如果你想尽可能快地摄取数据,包括变换,那么考虑使用MLCP与变换…< /P>


    还要注意的是,CPF的设计目的不是快速,而是健壮。CPF构建在触发器之上,它将导致对每个文档执行多个触发器。它跟踪文档属性中的状态,因此还创建其他数据库片段。所有这一切都使它能够在重新启动后存活下来,如果您有很多处理,您需要确保在不亲自照看的情况下完成这些处理,这一点尤其有用

    如果你想尽可能快地摄取数据,包括变换,那么考虑使用MLCP与变换…< /P>


    我在一台装有SSD磁盘和运行Windows7的四核CPU的机器上工作。当我将10000个文档插入启用CPF的集合时,CPU利用率保持在40%以下。我认为在后台处理在cpf:state initial中移动文档需要时间。我能考虑禁用CPF安装时创建的任何触发器吗?你还没有弄清楚瓶颈是什么。CPU利用率表明它可能是锁绑定的,但在排除磁盘之前您不知道。说“这是SSD”没有帮助。我仍在试图找出是什么原因导致文档插入变慢。但在同一个环境中,当我从数据库卸载CPF时,大约需要2秒钟。我正在一台装有SSD磁盘和运行Windows7的四核CPU的机器上工作。当我将10000个文档插入启用CPF的集合时,CPU利用率保持在40%以下。我认为在后台处理在cpf:state initial中移动文档需要时间。我能考虑禁用CPF安装时创建的任何触发器吗?你还没有弄清楚瓶颈是什么。CPU利用率表明它可能是锁绑定的,但在排除磁盘之前您不知道。说“这是SSD”没有帮助。我仍在试图找出是什么原因导致文档插入变慢。但在同一个环境中,当我从数据库卸载CPF时,大约需要2秒钟。