可以更改 Informatica 服务器、Informatica 软件本身或数据库服务器上的哪些设置或配置以增加 Informatica ETL 吞吐量?我们可以设置哪些基准来解决性能问题?我们专门使用 Netezza 作为源和 SQL Server 作为目标。
请从这个问题中排除多线程和 Informatica 分区。
这是我们过去做过的:
- 每隔一段时间重新启动服务器
- 在 ETL 加载之前删除 SQL Server 中目标表上的索引
- 提高提交级别
可以更改 Informatica 服务器、Informatica 软件本身或数据库服务器上的哪些设置或配置以增加 Informatica ETL 吞吐量?我们可以设置哪些基准来解决性能问题?我们专门使用 Netezza 作为源和 SQL Server 作为目标。
请从这个问题中排除多线程和 Informatica 分区。
这是我们过去做过的:
我使用 Informatica 访问 SQL Server 和 Netezza 的经验可以总结为:
读取速度同样快(100,000 行/秒;有时是速度的两倍),前提是选择 SQL 足够简单,即:
没有连接;
不
group by
;没有排序;
where
子句仅针对 SQL Server 表的群集键。在所有其他情况下,Netezza 将击败 SQL Server。
带有 PowerCenter 的插入属于这种
array
类型,SQL Server 通常每秒可以接收 2000 到 4000 行。如果 PowerCenter 不是瓶颈,则插入 Netezza 的速度为每秒 80,000 到 200,000 行。
多年来,使用 PowerCenter 的更新/删除在所有数据库上的速度都非常缓慢,因为执行的 SQL 是
singletons
而不是array
. 因此,以 SQL Server 为目标的会话通常下降到每秒约 500 行,而以 Netezza 为目标的会话通常下降到每秒 8 行。因此,我们在 Netezza 中为每个 PowerCenter 目标定义了临时表,并在会话执行时将所有更新/删除写入这些表。然后将这些更改作为
target post SQL
. 这可以很好地扩展,因为现在所有写入操作都以与插入相似的速度运行。以 SQL Server 作为目标而臭名昭著的写入器瓶颈的最佳解决方案是在 PowerCenter 中花费大量时间比较源与目标,并且只写入您检测到的任何差异。这将带你走很长的路,但不是规模。
我的最后一个问题是,为什么要将数据从 Netezza 移动到 SQLserver?如果您的企业有在 Netezza 上确实无法满足的要求,请说明哪些要求,也许可以解决。
如果 powercenter informatica 是瓶颈(而不是 netezza、sql server 或网络),那么 powercenter Session 中的设置可能会有所帮助。IIRC 它是“记录缓冲区大小”或类似的东西。将其从默认更改为 512MB。如果这有帮助,最好通过尝试较低的值将其减少到更合理的值。
此设置不是用于在内存中保存单个记录的大小,但它至少需要足够大以容纳其中的一条记录。内置帮助在这一点上有点含糊。
在相反的情况下(SQL Server -> Netezza),我注意到数据类型也可以发挥作用。如果源表布局包含 LONG/NTEXT/VARBINARY 数据类型,powercenter 可能会严重高估它需要为单个记录保留的内存量。Netezza 没有这些,但如果目标包含大字段,它可能也很重要。
powercenter 会话日志文件应该包含一些关于它保留多少内存来传输数据的信息。如果它太低,它可能成为瓶颈。