0

我们有一个 AS400 大型机运行我们的 DB2 事务数据库。我们还有一个 SQL Server 设置,它每晚都会加载来自 AS400 的数据。SQL Server 设置用于报告。

我可以链接两个数据库服务器,但是,有人担心来自 SQL Server 的查询会对 DB2 造成多大的性能影响。

基本上,担心的是,如果我们开始使用来自 SQL Server 的查询来访问 DB2,我们将陷入事务系统并搞砸订单和运输。

在此先感谢您提供任何可以分享的知识。

4

2 回答 2

1

任何对性能问题有正确答案的人都是错误的 :-) 适当的答案始终是“视情况而定”。性能调优最好通过测量、更改一个变量、重复来完成。

如果有人执行了 1,000 行的 SELECT 语句,DB2 for i 甚至都不会注意到。接受 Benny 的建议,在 IBM i 旁观时运行一个。如果他们需要提示,请使用 WRKACTJOB 并在 Int 列上排序。这代表交互式响应时间。我猜查询将在他们有时间注意到它处于活动状态之前完成。

如果这对管理层来说似乎不可接受,那么可能会提议在几个小时之前或之后对其进行测试,因为它不可能影响交互性能。

顺便说一句,RPG 人员也可以即时创建 Excel 电子表格。 Scott Klement在 Java POI/HSSF 类上发布了一些 RPG 包装器。此外,Easy400.net的 Giovanni Perrotti提供了一些从网页提供 Excel 电子表格的示例。

于 2014-01-15T22:33:55.390 回答
0

我大多同意 Buck,1000 行结果集没什么大不了的......

当然,除非系统正在查看数百个表中的数十亿行以获得您感兴趣的 1000 行。

假设存在一个有用的索引,1000 行应该没什么大不了的。如果您安装了 IBM i Access for Windows,则 System i Navigator 有一个名为“Run SQL Scripts”的组件,其中包括提供查询执行计划的可视化解释的“Visual Explain”。查看您可以确保正在使用索引。

在关键的事情上,确保工作正在 i 上完成。当使用标准链接表时,MS SQL Server 将尝试拉回所有行,然后执行它自己的“位置”。

从 MYLINK.MYIBMI.MYLIB.MYTABE 中选择 *,其中 MYKEYFLD = '00335';

而这种格式将语句发送到远程服务器进行处理并返回结果:

select * from openquery(MYLINK, 'select * from mylib.mytable where MYKEYFLD = ''00335''');

或者,您可以要求 i 伙计们为您构建一个存储过程,您可以调用该存储过程来取回您正在寻找的结果。就个人而言,这是我的首选方法。

查尔斯

于 2014-01-16T20:49:29.220 回答