并行加载数据集片段
在满负载期间,您可以通过将数据集拆分为并行加载的段来加速大型数据集的加载。表可以按数据范围、所有分区、所有子分区或特定分区进行拆分。
每个数据集段都使用单独的子任务加载。因此,在决定如何分割数据集时,您应该始终考虑数据库和网络资源的可用性。将表拆分为太多段可能会影响数据库性能并使网络容量过载。如果您选择使用分区数据集的数据范围分割方法,最佳做法是设置范围,使每个范围覆盖一个或多个完整分区。这将加快数据检索,并最大限度地减少对数据库处理资源的影响。
支持的数据源和目标
必须使用以下数据源和目标连接器的组合来定义数据任务。
支持的数据源连接器
- 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
设置并行加载
您可以使用两种方法之一拆分表格:数据范围 或分区。数据范围方法按数据范围拆分表格,而分区方法则按分区拆分表格。
使用数据范围方法
要按数据范围定义段边界,请执行以下操作:
-
在数据集 选项卡中,单击数据集右侧的
菜单并选择设置。
此时将打开并行加载对话框。
-
选择数据范围分割方法。
-
单击选择列。
表分段列对话框随即打开。
-
对于所有支持的数据源,将自动选择“唯一索引”列。选择要使用哪些其他数据列来划分范围,然后单击确定。
信息注释-
建议使用不允许 NULL 且在正常源数据库操作期间不更新的列(例如,主键列或具有固定日期的日期列)。使用在满载期间更新的列可能会导致目标数据库中出现重复项。
-
建议使用索引源列,因为这将优化数据检索性能。
-
最多可选择十列
-
具有空值的记录将不会被复制
-
以下数据类型不能用于按范围定义段:DOUBLE、FLOAT 和 LOB(BLOB、CLOB、NCLOB)
-
-
单击添加数据范围以添加数据范围段。
添加数据范围对话框将打开并显示所选列。
-
对于每一列,输入段的上部数据范围。
信息注释必须以源支持的格式输入 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'
-
-
单击确定保存设置并关闭对话框。
每个选定的列都将显示其指定的范围。
- 根据需要重复步骤 3-6 以添加列和数据范围。
- 单击验证,确认输入的数据与源列数据类型一致,且所有定义的段都包含值。
使用数据范围分段方法,即使没有为所有列定义数据范围,也会复制所有表数据。
编辑数据范围:
- 单击行末尾的
菜单,然后选择编辑。
- 根据需要编辑数据范围,然后单击确定以保存更改。
删除数据范围:
- 单击行末尾的
菜单,然后选择删除。
- 当提示确认删除时,单击删除。
使用示例
假设定义了以下分段:
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)))
使用分区法
您可以按所有表分区、表的所有子分区(如果数据源支持子分区)或特定分区定义段边界。
- 仅当数据集已分区时,才能使用此方法。
- 如果您有一个在此功能发布之前就存在的任务,并且您尚未启动该任务,或者想使用此方法并行重新加载一个或多个表,则首先需要刷新元数据,如 注册数据平台上已存在的数据 中所述(本主题中描述的元数据刷新过程对所有类型的数据任务都是相同的)。
使用所有分区
要按所有表分区或子分区定义段边界,请执行以下操作:
-
在数据集 选项卡中,单击数据集右侧的
菜单并选择设置。
此时将打开并行加载对话框。
-
选择分区分割方法。
-
请选择以下选项之一:
-
使用所有主分区
-
使用所有子分区
信息注释如果数据源不支持子分区,则此选项将被禁用。
-
- 单击确定。
使用特定分区
要按特定分区定义分段边界,请执行以下操作:
-
在数据集 选项卡中,单击数据集右侧的
菜单并选择设置。
此时将打开并行加载对话框。
-
选择分区分割方法。
-
选择指定分区。
信息注释选择指定分区时,将仅复制指定的分区。
-
单击添加分区。
随即打开添加分区对话框。
-
指定现有分区或子分区的名称。
如果要添加子分区,请选择子分区复选框。
- 单击确定保存设置。
- 根据需要重复步骤 4-6 以添加分区或子分区。
要编辑分区,请执行以下操作:
- 单击行末尾的
菜单,然后选择编辑。
- 根据需要编辑分区信息,然后单击确定以保存更改。
要删除分区,请执行以下操作:
- 单击行末尾的
菜单,然后选择删除。
- 当提示确认删除时,单击删除。
调整可以并行加载的段数
您可以增加或减少并行加载的段数。值继承自数据任务设置中的满负载 > 性能调整 > 并行加载的最大表数字段。当前值显示在并行加载对话框中的 "最多可并行加载 <n> 个段 "字符串中。当数据集被拆分为许多段时,增加数量可能会提高性能,但也会给数据库资源和网络容量带来更大的压力。