基于父子关系的MySQL Talend Open Studio数据迁移

基于父子关系的MySQL Talend Open Studio数据迁移,mysql,foreign-keys,etl,database-migration,talend,Mysql,Foreign Keys,Etl,Database Migration,Talend,我正在使用Talend Open Studio进行数据迁移,因为我正在将现有的应用程序体系结构升级到一个新的体系结构。我在这两个应用程序中都使用MySQL,但模式不同。我已经成功地在单个表之间迁移了数据,但是当我使用外键约束将数据从单个表传输到父子关系表时,数据传输速度非常慢。 例如,我正在将我的Cities表迁移到Cities and Cities 18n,下面是它们的模式: 我的旧模式: CITIES ( id city_name status created_at )

我正在使用Talend Open Studio进行数据迁移,因为我正在将现有的应用程序体系结构升级到一个新的体系结构。我在这两个应用程序中都使用MySQL,但模式不同。我已经成功地在单个表之间迁移了数据,但是当我使用外键约束将数据从单个表传输到父子关系表时,数据传输速度非常慢。 例如,我正在将我的Cities表迁移到Cities and Cities 18n,下面是它们的模式:

我的旧模式:

CITIES (
  id   
  city_name
  status
  created_at
)
我需要在其中迁移数据的新创建的架构:

CITIES (
  id   
  status
  created_at
)

CITIESI18N (
  id           
  lang_code
  name
  fk_city_id      (// foreign key of cities table)
)
以下是我的Talend作业的快照:

这是tmap配置:

现在,当我在没有外键的情况下传输数据时,结果非常快。见下文:

但当我使用外键传输时,传输速度非常慢:

(注:我以省表为例,因为它类似于城市表)


我认为使用外键约束时,它必须在传输数据时对列进行索引,从而使传输速度变慢,但我不确定。有什么办法可以解决这个问题,因为我有很多类似的表需要迁移。我只是想知道原因。

我不知道您为什么会有这种行为:您可以尝试将“Provence_i18n”重定向到tHashOutput(缓存组件),然后使用tHashOutput链接到Subject(参考tHashOutput-->tMySQLOutput)。您将有2个子对象,每次插入一个子对象。

我不知道您为什么会有这种行为:您可以尝试将“provience_i18n”重定向到tHashOutput(缓存组件),然后使用tHashOutput(参考tHashOutput)--->tMySQLOutput链接到子对象。您将有两个子对象,每次插入一个子对象。

您同时将数据加载到父级和子级。使用一个tmap。在第二个表中插入外键时,在外部/父表中也进行了插入。您也可以这样做:首先将数据加载到主CITIES表中,然后在SubjobOK上,加载到child/Cities18n表中。它会更快。让我知道它是否有效。

您正在同时将数据加载到父级和子级。使用一个tmap。在第二个表中插入外键时,在外部/父表中也进行了插入。您也可以这样做:首先将数据加载到主CITIES表中,然后在SubjobOK上,加载到child/Cities18n表中。它会更快。让我知道它是否有效。

尝试从tmap的id列中删除该键并检查它是否有效。MySQL仅为InnoDB表创建外键索引。你的桌子是InnoDB吗?加上检查中的任何其他情况-尝试从tmap的id列中删除该键,并检查其是否有效。MySQL仅为InnoDB表创建外键索引。你的桌子是InnoDB吗?再加上检查其他案件-