跳到主要内容 跳到补充内容

并行加载数据集片段

在满负载期间,您可以通过将数据集拆分为并行加载的段来加速大型数据集的加载。表可以按数据范围、所有分区、所有子分区或特定分区进行拆分。

信息注释如果您使用的是 Data Movement gateway ,则从 2024.5.35 版本开始会支持此特性。

每个数据集段都使用单独的子任务加载。因此,在决定如何分割数据集时,您应该始终考虑数据库和网络资源的可用性。将表拆分为太多段可能会影响数据库性能并使网络容量过载。如果您选择使用分区数据集的数据范围分割方法,最佳做法是设置范围,使每个范围覆盖一个或多个完整分区。这将加快数据检索,并最大限度地减少对数据库处理资源的影响。

支持的数据源和目标

必须使用以下数据源和目标连接器的组合来定义数据任务。

  • IBM DB2 for LUW
  • IBM DB2 for z/OS

    信息注释

    IBM DB2 for z/OS 源连接器不支持按分区或子分区进行表分段。

  • Microsoft SQL Server(基于日志)
  • MySQL
  • Oracle
  • PostgreSQL

    信息注释

    PostgreSQL 源连接器不支持按分区或子分区进行表分段。

  • SAP(应用程序)
    信息注释

    默认情况下,具有 SAP(应用程序)源端点的表依赖于客户端。MANDT 列直接自动从连接器中取用。

  • SAP HANA(数据库)
  • Amazon Redshift
  • Amazon S3
  • Google Cloud BigQuery
  • Google Cloud Storage
  • Microsoft Fabric Data Warehouse
  • Microsoft SQL Server
  • MySQL
  • Oracle
  • PostgreSQL
  • Snowflake

设置并行加载

您可以使用两种方法之一拆分表格:数据范围 分区数据范围方法按数据范围拆分表格,而分区方法则按分区拆分表格。

使用数据范围方法

要按数据范围定义段边界,请执行以下操作:

  1. 数据集 选项卡中,单击数据集右侧的 更多图标 菜单并选择设置

    此时将打开并行加载对话框。

  2. 选择数据范围分割方法。

  3. 单击选择列

    表分段列对话框随即打开。

  4. 对于所有支持的数据源,将自动选择“唯一索引”列。选择要使用哪些其他数据列来划分范围,然后单击确定

    信息注释
    • 建议使用不允许 NULL 且在正常源数据库操作期间不更新的列(例如,主键列或具有固定日期的日期列)。使用在满载期间更新的列可能会导致目标数据库中出现重复项。

    • 建议使用索引源列,因为这将优化数据检索性能。

    • 最多可选择十列

    • 具有空值的记录将不会被复制

    • 以下数据类型不能用于按范围定义段:DOUBLE、FLOAT 和 LOB(BLOB、CLOB、NCLOB)

  5. 单击添加数据范围以添加数据范围段。

    添加数据范围对话框将打开并显示所选列。

  6. 对于每一列,输入段的上部数据范围。

    信息注释

    必须以源支持的格式输入 DATE 列中的值。例如,对于 Oracle 源代码,正确的格式为:

    • ALTER SESSION SET NLS_DATE_FORMAT:

      'YYYY-MM-DD HH24:MI:SS'(指定仅 YYYY-MM-DD 也有效)

    • ALTER SESSION SET NLS_TIMESTAMP_FORMAT:

      'YYYY-MM-DD HH24:MI:SS.FF9'

    • ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT:

      'YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM'

  7. 单击确定保存设置并关闭对话框。

    每个选定的列都将显示其指定的范围。

  8. 根据需要重复步骤 3-6 以添加列和数据范围。
  9. 单击验证,确认输入的数据与源列数据类型一致,且所有定义的段都包含值。
信息注释

使用数据范围分段方法,即使没有为所有列定义数据范围,也会复制所有表数据。

编辑数据范围:

  1. 单击行末尾的 更多图标 菜单,然后选择编辑
  2. 根据需要编辑数据范围,然后单击确定以保存更改。

删除数据范围:

  1. 单击行末尾的 更多图标 菜单,然后选择删除
  2. 当提示确认删除时,单击删除

使用示例

假设定义了以下分段:

数据表示例
Column_1 Column_2 Column_3

10

30

105

20

20

120

100

12

99

在这种情况下,将为每个负载段创建以下“WHERE”子句:

  • 分段 1:((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105)))
  • 分段 2:NOT ((COL1 < 10) OR ((COL1 = 10) AND (COL2 < 30)) OR ((COL1 = 10) AND (COL2 = 30) AND (COL3 < 105))) AND ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 20) AND (COL2 = 20) AND (COL3 < 120)))
  • 分段 3:NOT ((COL1 < 20) OR ((COL1 = 20) AND (COL2 < 20)) OR ((COL1 = 30) AND (COL2 = 20) AND (COL3 < 120))) AND ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))
  • 分段 4:NOT ((COL1 < 100) OR ((COL1 = 100) AND (COL2 < 12)) OR ((COL1 = 100) AND (COL2 = 12) AND (COL3 < 99)))

使用分区法

您可以按所有表分区、表的所有子分区(如果数据源支持子分区)或特定分区定义段边界。

信息注释
  • 仅当数据集已分区时,才能使用此方法。
  • 如果您有一个在此功能发布之前就存在的任务,并且您尚未启动该任务,或者想使用此方法并行重新加载一个或多个表,则首先需要刷新元数据,如 注册数据平台上已存在的数据 中所述(本主题中描述的元数据刷新过程对所有类型的数据任务都是相同的)。

使用所有分区

要按所有表分区或子分区定义段边界,请执行以下操作:

  1. 数据集 选项卡中,单击数据集右侧的 更多图标 菜单并选择设置

    此时将打开并行加载对话框。

  2. 选择分区分割方法。

  3. 请选择以下选项之一:

    • 使用所有主分区

    • 使用所有子分区

      信息注释

      如果数据源不支持子分区,则此选项将被禁用。

  4. 单击确定

使用特定分区

要按特定分区定义分段边界,请执行以下操作:

  1. 数据集 选项卡中,单击数据集右侧的 更多图标 菜单并选择设置

    此时将打开并行加载对话框。

  2. 选择分区分割方法。

  3. 选择指定分区

    信息注释

    选择指定分区时,将仅复制指定的分区。

  4. 单击添加分区

    随即打开添加分区对话框。

  5. 指定现有分区或子分区的名称。

    如果要添加子分区,请选择子分区复选框。

  6. 单击确定保存设置。
  7. 根据需要重复步骤 4-6 以添加分区或子分区。

要编辑分区,请执行以下操作:

  1. 单击行末尾的 更多图标 菜单,然后选择编辑
  2. 根据需要编辑分区信息,然后单击确定以保存更改。

要删除分区,请执行以下操作:

  1. 单击行末尾的 菜单,然后选择删除
  2. 当提示确认删除时,单击删除

调整可以并行加载的段数

您可以增加或减少并行加载的段数。值继承自数据任务设置中的满负载 > 性能调整 > 并行加载的最大表数字段。当前值显示在并行加载对话框中的 "最多可并行加载 <n> 个段 "字符串中。当数据集被拆分为许多段时,增加数量可能会提高性能,但也会给数据库资源和网络容量带来更大的压力。

信息注释每个段都使用专用的子任务加载,因此,例如,如果您选择使用所有主分区选项,并且源数据集有 20 个主分区,将并行加载的最大表数值增加到 15 将导致并行加载 15 个段(分区)。当子任务完成运行时,将分配它们以加载剩余的 5 个分区

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们如何改进!