我们有一个 AS400 大型机运行我们的 DB2 事务数据库。我们还有一个 SQL Server 设置,它每晚都会加载来自 AS400 的数据。SQL Server 设置用于报告。
我可以链接两个数据库服务器,但是,有人担心来自 SQL Server 的查询会对 DB2 造成多大的性能影响。
基本上,担心的是,如果我们开始使用来自 SQL Server 的查询来访问 DB2,我们将陷入事务系统并搞砸订单和运输。
在此先感谢您提供任何可以分享的知识。
我们有一个 AS400 大型机运行我们的 DB2 事务数据库。我们还有一个 SQL Server 设置,它每晚都会加载来自 AS400 的数据。SQL Server 设置用于报告。
我可以链接两个数据库服务器,但是,有人担心来自 SQL Server 的查询会对 DB2 造成多大的性能影响。
基本上,担心的是,如果我们开始使用来自 SQL Server 的查询来访问 DB2,我们将陷入事务系统并搞砸订单和运输。
在此先感谢您提供任何可以分享的知识。
任何对性能问题有正确答案的人都是错误的 :-) 适当的答案始终是“视情况而定”。性能调优最好通过测量、更改一个变量、重复来完成。
如果有人执行了 1,000 行的 SELECT 语句,DB2 for i 甚至都不会注意到。接受 Benny 的建议,在 IBM i 旁观时运行一个。如果他们需要提示,请使用 WRKACTJOB 并在 Int 列上排序。这代表交互式响应时间。我猜查询将在他们有时间注意到它处于活动状态之前完成。
如果这对管理层来说似乎不可接受,那么可能会提议在几个小时之前或之后对其进行测试,因为它不可能影响交互性能。
顺便说一句,RPG 人员也可以即时创建 Excel 电子表格。 Scott Klement在 Java POI/HSSF 类上发布了一些 RPG 包装器。此外,Easy400.net的 Giovanni Perrotti提供了一些从网页提供 Excel 电子表格的示例。
我大多同意 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 伙计们为您构建一个存储过程,您可以调用该存储过程来取回您正在寻找的结果。就个人而言,这是我的首选方法。
查尔斯