0

我们在其中一个源表中有 17 条记录数据集,其中第 14 条记录中有错误数据,这导致作业失败。然后,在目标中仅插入 10 条记录作为 mysqloutput 组件中给定为“10”的提交大小,并且作业失败。在更正错误记录后的下一次执行中,作业将获取所有执行成功的 17 条记录。因此,目标中将存在重复项。

我们尝试了 :

为了克服这个问题,我们尝试了 tmysqlrollback 组件,其中包含了 tmysqlconnection 和 tmysqlcommit 组件。

Q1 :在不使用 tmysqlconnection 和 tmysqlcommit 组件的情况下,有没有其他选项可以使用 tmysqlrollback?

从文档中探索了 tmysqlrollback 和 commit 组件

https://help.talend.com/reader/QgrwjIQJDI2TJ1pa2caRQA/7cjWwNfCqPnCvCSyETEpIQ

但仍在寻找如何设计上述流程高效方式的线索。

Q2:另外,我们想从性能的角度了解 RAM 的使用和磁盘空间的消耗。

任何帮助将不胜感激?

4

1 回答 1

1
  1. 不,在 Talend 中进行事务的唯一方法是使用 打开连接tMysqlConnection,然后使用 a 提交tMysqlCommit或使用回滚tMysqlRollback
  2. 在不知道您在工作中做什么(查找、转换..等)的情况下,很难就内存消耗和性能向您提供建议。但是如果你只有一个目标源,那么内存消耗应该是最小的(确保你在tMysqlInput组件上启用了流)。如果您有另一个数据库作为源,那么 ram 消耗取决于该数据库驱动程序的配置方式(jdbc 驱动程序通常接受一个参数来告诉它一次只获取一定数量的记录)。
    在内存中处理数据的查找和组件(tSortRow, tUniqRow, tAggregateRow..etc)是导致内存问题的原因,但可以调整它们的使用(使用磁盘等方法)。
于 2018-02-19T10:35:48.020 回答