基于父子关系的MySQL Talend Open Studio数据迁移
我正在使用Talend Open Studio进行数据迁移,因为我正在将现有的应用程序体系结构升级到一个新的体系结构。我在这两个应用程序中都使用MySQL,但模式不同。我已经成功地在单个表之间迁移了数据,但是当我使用外键约束将数据从单个表传输到父子关系表时,数据传输速度非常慢。 例如,我正在将我的Cities表迁移到Cities and Cities 18n,下面是它们的模式: 我的旧模式:基于父子关系的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 )
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吗?再加上检查其他案件-