免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4709 | 回复: 10
打印 上一主题 下一主题

有做过AS400上的SQL改造的吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-08 11:23 |只看该作者 |倒序浏览
论坛里面有做过AS400上rpgle程序改造为嵌入SQL的吗?

论坛徽章:
0
2 [报告]
发表于 2013-03-08 13:04 |只看该作者
yeeXun 发表于 2013-03-08 11:23
论坛里面有做过AS400上rpgle程序改造为嵌入SQL的吗?


做过SQLRPGLE项目实施,有什么问题?

论坛徽章:
5
2015亚冠之阿尔艾因
日期:2015-08-10 02:23:34操作系统版块每日发帖之星
日期:2015-08-13 06:20:002015七夕节徽章
日期:2015-08-21 11:06:1715-16赛季CBA联赛之山西
日期:2016-04-13 02:36:59操作系统版块每日发帖之星
日期:2016-04-14 06:20:00
3 [报告]
发表于 2013-03-08 13:37 |只看该作者
有没有比较过SQLRPGLE和普通RPGLE的速度?改成SQL有些什么优点呢?

论坛徽章:
0
4 [报告]
发表于 2013-03-08 13:53 |只看该作者
回复 2# passthru 最近在做RPG程序改造为SQLRPGLE 的程序,目的是为了提高效率,有个已经写好的平台,我觉得平台写的有点问题,所以想自己写个,但是不太了解400上的DB2的运作机制。
这个平台是这样的:
1、统一管理交易的查询SQL语句
2、这些查询SQL语句被保存在一个表A中
3、改造程序统一调用一个主处理程序去循环读表A(RPG中dow...enddo),然后取到当前交易的SQL语句,再进行拆分,给变量赋值。
4、使用静态SQL

我觉得这样会好些:
1、使用游标
2、使用绑定变量
3、不用统一管理每个交易的查询SQL语句,因为每个交易有变化,使用到的宿住变量不一样。

能给点建议吗?

论坛徽章:
0
5 [报告]
发表于 2013-03-08 13:55 |只看该作者
回复 3# pacman2000
肯定是SQL处理能力强于RPG才改造的嘛,比较过了,改造后效果非常明显!
   

论坛徽章:
0
6 [报告]
发表于 2013-03-08 14:42 |只看该作者
本帖最后由 passthru 于 2013-03-08 14:44 编辑
yeeXun 发表于 2013-03-08 13:53
回复 2# passthru 最近在做RPG程序改造为SQLRPGLE 的程序,目的是为了提高效率,有个已经写好的平台,我觉得 ...


从系统执行效率上来说,因为DB2/400有两个数据引擎,一个是CQE,用来做RPG\QUERY等传统的技术实现处理;一个是SQE,用来做SQL数据处理。两者处理效率上,目前基本是持平,在部分细节处理中,各有自己的优势。

RPGLE是程序开始处理时,通F表的定义,默认是立即打开ODP通路,rpgle处理结果与表数据结构的字段是绑定的,即数据字段的属性对rpgle的数据结果是可以进行后续处理的。

如果用SQLRPGLE进行替换处理,如果没有使用QAPI进行加工处理,输出结果很难进行后续拆分处理。不知道你有没有考虑过?

提醒一下:如果你在A表定义的SQL语句,是动态的,在SQLRPGLE中处理形式也要对应是动态处理格式。

论坛徽章:
0
7 [报告]
发表于 2013-03-08 15:03 |只看该作者
yeeXun 发表于 2013-03-08 13:55
回复 3# pacman2000
肯定是SQL处理能力强于RPG才改造的嘛,比较过了,改造后效果非常明显!


如果用SQL替换RPG处理,‘改造后效果非常明显!’,原因有两点:1)RPG处理逻辑存在问题;2)RPG处理中有中间过程结果再处理,看似RPG需要比SQL处理需要更长的处理时间。

如果SQLRPGLE对中间处理结果没有影响的话,就按SQL处理。

论坛徽章:
0
8 [报告]
发表于 2013-03-08 16:15 |只看该作者
回复 6# passthru

A表中定义的语句其实就是一个简单地查询语句,只是包括宿主变量,如:
select col1,col2,col3,col4,col5
from  tablename
where col8 = :VAR1
   and col9 >= :VDATE1 AND col9 <= :VDATE2
处理这个语句的RPG程序主要是给这些宿主变量赋值,再执行查询语句,得到符合条件的数据,然后下传;
其实这个赋值是不必要的,因为SQL处理的时候,会自己去处理这些宿主变量;

了解点oracle的优化器,但对于db2的优化器不熟,你说的QAPI也不了解;
另外,‘改造后效果非常明显!’原来的RPG处理却是慢,改造后效果是挺明显的,有程序处理逻辑不合理的可能。

论坛徽章:
0
9 [报告]
发表于 2013-03-09 09:29 |只看该作者
我有另外一个关于性能的疑问,没具体测试过,不知有无人测试过改善性能:

一个有几百万条记录的PF,是用游标LOOP取值统合性能好,还是用一个LF来CHAIN性能好? 
这里我所讲的统合性能包括RAM,CPU使用率和存储空间。按道理讲CHAIN应该是性能最好的,但PF记录量大。没具体测试过。

论坛徽章:
0
10 [报告]
发表于 2013-03-19 20:38 |只看该作者
做过的一个简单测试:
对同一张表进行UPDATE操作
10万条记录
SQLRPGLE  执行10万次UPDATE语句,耗时近5个小时
RPGLE   F表打开,再通过READ语句读取,UPDATE命令更新记录,5秒。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP