知识库 : 在iUAP DI中提高数据库性能

Edit Document

iUAP DI 中提高数据库性能

典型的数据仓库场景下,使用 iUAP DI 可以从各种数据库 读取 和写入数据。在 大多数 情况下,都是使用数据库的 JDBC 驱动 完成 这个工作。所以 读写数据库操作时都要通过中间的 JDBC 抽象层 下面 我们分析 一下读写数据库的详细过程

如果 步骤中指定了数据库连接,通常是选择一个数据库连接名。 这样 步骤就可以找到数据库的元信息 转换运行时 ,在步骤的 初始化 阶段会建立数据库连接。如果 所有使用 数据库的步骤 都可以 成功的建立数据库连接,转换就开始运行, 这时 就可以向数据库中读写数据。 需要 说明的是每个步骤都会建立一个独立的数据库连接。

下面从 DI 对数据的操作和数据库本身两方面优化阐述

一、 处理 数据的往返操作

SQL 语句和参数值被传到数据库,数据库就会返回执行 SQL 语句,并返回结果。这样 产生了一个往返过程。所以 和数据 相关的 DI 步骤 严重依赖这种往返操作 速度。而这种 往返 操作速度取决与网络 速度 、网络延迟 数据库性能。

1      网络速度

网络 的速度也就是 带宽 ,会影响性能 尤其有很多数据需要通过网络来处理时,网络的带宽就更加重要了。象 “表输出 插入 更新 步骤加载 数据库,要通过网络交换大量的数据。

你可能 对网络的性能无能为力 但是 可以在加载数据之前,把数据移动到和数据库尽可能近的地方。 一辆装满 硬盘 高速公路上奔驰的大货车的带宽是无可比拟的 换句话 对于 一些慢速网路,可以使用一些非常规手段,比如 数据放到一个磁盘和 光盘上,使用快递邮送过来。

2      网络 延迟

运行 DI 计算机 和数据库服务器 网路距离越远网络延迟越大,导致性能差异就会巨大。对于 网络 延迟有时无能为力 可以试试其他解决的办法。首先 ,看 能否减少对数据库 操作 的往返次数,例如:在 数据库 查询 步骤 中使用缓存可以有效的减少 数据库的操作。 其次 使用 批量处理,在 表输出 选中 使用 批量插入 选项, 把数据行 放到 大的批量提交数据块里,可以减少数据库的往返操作次数。

二、 关系 型数据库的操作

数据 库本身的性能对转换的性能也起着重要作用,下面是一些通用的调优规则:

1      批量 提交 大小

支持批量提交的步骤中,可以根据使用数据库的不同,可以尽量将提交数设置的 大些 ,但如果设置的过大就会占用过多的数据库的重做表空间,反而 使 性能会降低, 一般 来说 提交记录 数量 设置 5000 较为 合适,如果数据性能较高且重做表空间设置也比较大可以设置更大些。

2      索引

做查询和数据表连接时,表中引入索引是 至关重要 的。在 数据库 查询 维度 更新 应对关键字段增加索引。但 索引 会使数据库的的更新、插入、删除操作较慢。在 关系 型数据库中创建的索引越多,这些操作就会越慢,因为这些原因,在做大规模 操作时 ,如数据初始化,批量更新等操作,可以先删除索引,然后再做完这些大规模操作 再创建索引,会更节省时间。

3      表分区

对于 大表数据可以考虑使用数据表分区,分区可以按照时间,也可以按照 Hash 值等,但无论分区 按照 哪种逻辑,都应该让数据库能快速知道一条记录在哪个分区里 这样 在使用 索引前,就会所限查询范围,相应提高查询性能。

4      约束 和触发器

数据仓库 中有 约束 和触发器会降低数据库的 性能 ,因为每次 DML 操作 都要 验证约束和执行触发器, 所以 在数据仓库中要尽可能少使用约束,不要使用触发器。

5      数据库 日志

通常 对关系型数据库的 DML 操作都会写日志,对于数据库仓库日志没有 OLTP 那么重要,可以考虑修改设置, 使 尽可能少输出日志 。例如 :在 Oracle 通过 alter table < table_name > nologging; 可以 大幅减少 该表 的日志输出,从而提高效率。

Attachments:

在iUAP DI中提高数据库性能.docx (application/vnd.openxmlformats-officedocument.wordprocessingml.document)