Talend - 插入/更新与表文件表

时间:2017-06-07 07:23:51

标签: talend

我一直在使用insert / update从sql server更新或插入mysql中的表。这项工作被设置为cronjob。这项工作每8小时运行一次。源表中的记录数约为400000.每8小时约100条记录可能会更新或插入。

我在这样的地方运行工作,在源级别,我只在最后一次运行和当前运行之间进行修改后的运行。

我观察到只需要更新/插入100行,所用时间为30分钟。

但是,另一种方法是将所有400000转储到一个文件中,然后截断目标表并重新插入所有这些记录。此过程在每次作业运行时完成

所以,现在我可以知道为什么插入/更新需要花费这么多时间?

由于 瑞斯

2 个答案:

答案 0 :(得分:0)

正如你所说的那样,在源级别运行工作,我只在最后一次运行和当前运行之间进行修改运行。

  • 所以只需在临时表中插入所有这些修改过的行
  • 从临时表中取出最小日期修改日期,或使用与源中仅提取已修改行的相同条件,并从目标表中删除所有行。
  • 然后您可以插入从temp到end table的所有行。

如果您有任何疑问,请与我联系。

答案 1 :(得分:0)

在不知道数据库的配置方式的情况下,很难说出确切的原因,但我会说更新很慢,因为您的目标表上没有索引。 尝试在插入/更新键列上添加索引,它会加快速度 另外,你是否在每次插入后进行提交?如果是这样,请禁用自动提交,并仅在成功时提交,如下所示:tMysqlOutput -- OnComponentOk -- tMysqlCommit