【问题标题】:Talend Open Studio data migration with MySQL on parent-child relationTalend Open Studio 使用 MySQL 进行父子关系数据迁移
【发布时间】:2019-08-06 04:16:26
【问题描述】:

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

我的旧架构:

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 配置:

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

但是当我用外键传输时,我的传输超级慢:

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

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

【问题讨论】:

  • 尝试从 tmap 的 id 列中删除键并检查它是否有效。
  • MySQL 仅为 InnoDB 表的外键创建索引。你的表是 InnoDB 吗?加上检查任何其他案例 - stackoverflow.com/questions/304317/…

标签: mysql foreign-keys etl database-migration talend


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您正在同时将数据加载到父级和子级。使用一个 tmap。当您在第二个表中插入外键时,还会在外部/父表中插入。您可以选择做的是:首先将数据加载到主 CITIES 表中,然后将 onSubJobOk 加载到 child/CITIESI18N 表中。它会更快。让我知道它是否有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      相关资源
      最近更新 更多