性能与优化
说明
在本章节对 UDI Studio 平台的性能进行了测试,并给出在某些场景下的性能优化方法。
环境准备
在数据集成场景中,数据来源一般为数据文件、数据库。在性能测试中,我们准备了以下数据:
数据类型 | 数据规 模 | 字段数量 | 数据条数 |
---|---|---|---|
CSV 文件 | 311MB | 39 | 1152074(115万) |
数据库表 | 10GB | 172 | 60741392(6074万) |
UDI Studio JVM 配置为:-server -Xmx4096m -Xms2048m
数据库采用 PostgreSQL 数据库
数据读取
在平台有多种组件可以读取数据,在测试中选了两种比较有代表性的组件:CSV 文件读取组件、表输入组件
工作流 | 数据规模 | 读取时间(s) | 读取速度(MB/s) | 最大内存占用(G) |
---|---|---|---|---|
CSV 文件读取组件读取 CSV 文件 | 311MB | 8.147 | 38.17 | 0.42 |
表输入组件读取数据库表 | 10GB | 1443 | 7.09 | 0.78 |
多个表输入组件读取数据库表 | 10GB | 551 | 18.58 | 0.98 |
测试步骤与详细数据如下: 使用表输入组件读取数据库表数据,工作流如下:
UDI Studio JVM 监控如下:
空闲 JVM 占用 0.63G,JVM 最高占用 1.41G
执行时间为:1443秒(24分3秒)
使用 CSV文件输入组件读取 csv 文件数据,工作流如下:
UDI Studio JVM 监控如下:
空闲 JVM 占用 0.98G,JVM 最高占用 1.4G
执行时间为:8.147秒
读取优化
对于数据可以按某个字段进行分区的情况,可以采用多个输入组件按分区同时读取数据,减少数据读取时间。 在数据库表数据中,可以按时间进行分区,同时读取分区数据。根据分区字段,采用 5 个表输入组件同时读取数据,工作流如下:
UDI Studio JVM 监控如下:
空闲 JVM 占用 0.43G,JVM 最高占用 1.41G
执行时间为:551秒(9分11秒)
数据写入
平台有多种组件可以写数据,在测试中选了两种比较有代表性的组件:文本文件输出组件、表输出组件
工作流 | 数据规模 | 写入时间(s) | 写入速度(MB/s) | 最大内存占用(G) |
---|---|---|---|---|
读取 CSV 文件后写入文本文件 | 311MB | 35.9 | 8.66 | 1.01 |
从数据库表读取数据后写入数据库 | 10GB | 9436 | 1.08 | 1.06 |
从数据库表读取数据后多组件同时写入数据库 | 10GB | 3293 | 3.1 | 0.89 |
测试步骤与详细数据如下: 使用 CSV文件输入组件读取 csv 文件数据再使用文本文件输出组件写入到文件,工作流如下:
UDI Studio JVM 监控如下:
空闲 JVM 占用 0.8G,JVM 最高占用 1.86G
执行时间为:35.9秒
使用多个表输入组件读取数据库表数据再使用表输出组件写入到数据库,工作流如下:
UDI Studio JVM 监控如下:
空闲 JVM 占用 0.6G,JVM 最高占用 1.61G
执行时间为:9436秒(2小时37分16秒)
写入优化
对于写入数据,可以采用多个输出组件同时写入数据,减少数据写入时间 在 UDI Studio 平台中,对同时写入数据进行了优化,可以通过修改组件副本数的形式,定义同时写入数据的组件数量。采用 3 个表输出组件同时写入数据,工作流如下:
UDI Studio JVM 监控如下:
空闲 JVM 占用 0.8G,JVM 最高占用 1.69G
执行时间为:3293秒(54分53秒)