知识库 : 在iUAP DI中提高读文本文件的性能

Edit Document

iUAP D I 提高读文本文件的性能

文本 文件读取数据时,有一系列的操作可能 性能瓶颈。具体 原因 可能 很多,为了 深入 调查 原因,首先要弄清楚读取文件都做了哪些事情

首先 ,读取文件的转换步骤要从磁盘中读取文件所在的数据块。如果 一个慢速的磁盘中读取,读取的性能 肯定 不高。另外 磁盘 的寻道时间也会影响磁盘的读取性能 如果 要求“ CSV 输入 文本输入 频繁 读取较小的数据文件 读取较小的数据块,那么就会 花费 一定的磁头重定向时间。

文件读取数据后, DI 会把读取的字节转换成字符,这些字符就构成的文本或字符串,把 字节 转换成字符 使用 的编码必须和文件原来的编码相同 否则会乱码。 使用 不同的编码 方式 的转换效率是不同的,例如使用双字节 UTF-16 四字节的 UTF-32 非常占用 CPU 的。

获得字符后,就要把这些字符分割成不同的字段 。“ CSV 文件输入 “文本 输入 选用 格式是 CSV ,会根据回车换行符读取每一行文本,然后把这行文本 按照 分隔符分割成若干字段。如果 “文本 输入 的格式 使用的 Fixed ,则根据字符数 分割 字段。

最后 ,抽取的字段 要转化 成对应的数据类型,如 Date Number 。日期 类型和数值类型的转换比较消耗 CPU

以上 这些 都依赖 计算机的处理性能,尤其是读取很多字段做数据类型转换时,通常消耗大量的 CPU 时间 。除此之外 ,还有 trim 操作,使用默认值替换空值等。

通过 以上分析读取文本的过程,可以从以下的 技巧 来加快 读取文本 文件的速度。

  1. 读取 文本 文件 时使用延迟转换

字符编码 和数据类型的转换导致的 CPU 消耗似乎是无法避免的 但在 一些 场合下, 使用“ CSV 输入 的“延迟 转换 选项 如下图

如果 选中 了该选项,所有关于数据相关的转换,如字符编码、数据类型转换、 trim 操作等,都会尽可能的延迟。输入 步骤 只是以二进制方式读取文件, 分成若干 字段

很明显,后面 的步骤如果 需要 读取 这些 字段数据 数据转换 还是会 进行 但在以下的情况使用延迟转换可以提高性能。

         如果 大多数字段是以简单 以同样的格式写入另外一个 文本 文件

         CSV 输入 “Oracle 加载 Oracle 加载 工具直接读取文本,使用 延迟 转换会 加快 生成临时文本文件的速度。

  1. 配置 NIO 的大小

NIO 缓存 大小 这个 参数对性能 也有 影响 可以在 “CSV 输入 设置该参数 。如下图

这个 参数 决定了从文件中一次读取数据块 大小 。没有 一个 明确的规则来指导该设置多大合适。如果 设置的 比较大,每次读取的 时间 过长,会影响 转换并发 。一般 来说 ,如果磁盘的缓存较大或寻道时间较短 可以把缓存设置 小些 ,这样的 运行 可能会快。

  1. 改变 文件位置

如果文件 存放在 FTP Windows 网络共享上,则 文本 文件的读取 不仅 要依赖 远程 磁盘的读取速度还依赖网络的传输速度 。如果文本 文件读取 存在性能瓶颈可以考虑改变文件的存放文件位置,把文件存放到读取性能 较高 的磁盘上可以显著提高读取 文件 性能。

总之, 文本文件的读取的性能瓶颈 在磁盘 的读取和类型的转换上, 前者 依赖磁盘 IO 速度,后者依赖 CPU 速度。合理 设置 文件位置和 缓存 大小可以提高 读取 速度 。减少 不必要 的类型转换可以减少 CPU 消耗,提高读取文本速度。

Attachments:

在iUAP DI中提高读文本文件的性能.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)
在iUAP DI中提高读文本文件的性能.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)