讨论:关于创建obj时的参数--share
不知道大家有没有主意到,在创建obj的时候有个系统参数share。它的作用是让运行同一作业的一个或多个程序公用同一个数据通路。简单点说就是多个进程调用只使用同一条到硬盘,内存访问它的路径。缩短了第二次以后打开文件所需要的时间,还能够节省内存占用。
但是,这么一个功能,为什么系统默认参数是*no而不是*yes呢。
不知道大家有没有主意到这个问题。我这里现在没有条件做大负载情况下的测试,来检测修改这个参数对系统性能的影响。大家谁有条件的话测试一下,把结果公布出来。
————希望大家踊跃讨论 :em02:
| yoyoage 回复于:2004-05-19 18:15:01 |
| 如果一个文档在相同的作业/活动组中经常需要被多次按照同一种路径来访问,使用share(*yes)固然是个可以节约资源的好方法。
但是,从编程的角度来考虑,会需要注意到这样几个问题: 1。同一个作业中用到的程序,某些是按照键字排列顺序访问数据库文件,而有些则是按照rrn数来打开该文件。因此不能用共享的访问路径。 2。比如,pgm1第一个打开一个文档filex,只对该文档进行read操作;而pgm调用程序pgm2,在pgm2中要对filex进行update/delete操作,那么在pgm1中打开filex的时候,就应该是以updatable/addable的方式(f-specification中定义)。这就需要我们第一次打开一个文件的时候,允许所有的操作,因为pgm2可能还会掉用其它的程序来对filex进行不确定的操作。这样,某些数据的安全性就得不到保障。 3。如果第一次打开filex的时候用到了commit control,那么其后用共享访问路径打开改该文件的程序中都要求用到commitment control. 4。只有第一次带开数据库文件的时候,override ,f-spec才会有用,其后的override,f-spec都被忽略,除非你在OVRDBF中改变了share或者lvlchk的参数。 |
| e_server 回复于:2004-05-20 00:40:34 |
| 说的好,这么详细的解释。高手~~ |
| mamei 回复于:2004-05-20 07:59:32 |
| 呵呵,楼上的开始谦虚了!!!! |
| 居士 回复于:2004-05-20 08:54:36 |
| yoyoage 解释的,后来我查了一些资料,也是和你解释的差不多。
不过,我是搞系统管理的,对一些开发方面的还是有点模糊,能不能再用通俗一点的,不带有专用术语的语言再解释一下。 我举个例子,对于最简单的400应用--domino。它的数据库为文档型数据库,就是一个一个分开的nsf文件。然后很多用户可能同时调用阅读该文件,比如names.nsf这个数据库。对于非管理员来说,大家只有read的权限那么,可不可以通过share(*yes)来设置它,提高运行效率呢? |
| fzrxh 回复于:2004-05-20 11:30:44 |
| 我想文檔型數據庫與關係型數據庫做法不一樣把 |
| 居士 回复于:2004-05-20 11:48:05 |
| 对,我希望我能能讨论讨论share这个参数对两种数据库的性能影响。
大家继续~ |
| aeiou 回复于:2004-05-20 13:17:13 |
| 应该是创建PF或者LF的时候有这个参数。
我原来有篇贴子说过一些:http://chinaunix.net/jh/10/233584.html Share的时候如果不注意,程序之间容易产生指针错位的现象,导致程序运行结果异常。所以一般都不会设置成默认值。而是在需要用的时候通过OVRDBF 来修改。 |
| 居士 回复于:2004-05-20 14:22:03 |
| 谢谢。
这里我再把aeiou的帖子转贴一下,供大家讨论: 1.ShareODP: 在PF或者LF编译的时候,有个SHARE(Share Open Data Path)的参数,控制该文件是否共享其打开路径。 如果指定SHARE为*NO的话,程序在每次打开一个文件的时候,都会为该文件建立一次访问路径;如果指定SHARE为*YES的话,程序在第一次打开该文件的时候,系统建立该文件的访问路径,在同一个ActiveGroup中再打开该文件时,就不再重新建立该文件的访问路径,而是共享使用之前建立的路径,从而提高了程序运行的速度。 一般在编译的时候该参数设置为*NO,即不是共享打开。在需要共享打开的时候,使用OVRDBF对该参数进行更改。 使用ShareODP需要注意的一些东西: 1).由于在不同的ActiveGroup之间不能ShareODP,所以如果几个程序在编译的时候没有加入到同一个ActivationGroup中,ShareODP就不会有什么效果。 2).如果PGMA打开FILEA并定位到了第一条记录,然后PGMA调用PGMB;PGMB也打开了FILEA并直接读FILEA,将读到第二条记录;PGMB运行完后PGMA又继续读FILEA下一条记录,此时它读到的将是第三条记录。而如果没有ShareODP的话,PGMA两次读到的会是第一条和第二条记录,PGMB读到的会是第一条记录。 ActiveGroup: 在CRTPGM 的时候,有个参数ACTGRP(ActivationGroup),控制该PGM在运行的时候属于哪个ActiveGroup。如果指定*NEW,则该PGM会重新建立一个ActiveGroup;如果指定为*CALLER,则该PGM会与调用它的PGM使用同一个ActiveGroup。 2.UserOpen: RPG程序在使用F表引用外部文件的时候,有一个KeyWords是USROPN。 在没有使用USROPN的时候:系统会在每次运行该程序的时候自动打开所引用的文件;一般可以通过设置*LR为*ON来自动关闭文件,但是如果是SubProcedure,系统不会自动关闭所打开的文件。 如果指定了USROPN:则系统不再控制文件的打开与关闭,由用户手工进行文件的OPEN与CLOSE;如果一个模块已经打开还没有关闭文件的情况下,该模块将不能再对该文件做打开的操作。 USROPN比系统自动打开文件要慢一些。在打开同一个文件5000次的情况下,USROPN使用了400毫秒,系统自动打开只用了4毫秒。 使用UserOpen需要注意的一些东西: 1).在OPEN之前最好使用 %OPEN(FileName) 检查要打开的文件是否已经打开,如果没有打开再执行OPEN的操作。 2).CLOSE *ALL的命令可以关闭本模块打开的所有文件。如果一个文件没有指定为USROPN,Close *ALL也将关闭该文件。并且如果该模块是不参与RPG Cycle的程序,如一个SubProcedure,则在第二次运行本模块的时候,该文件将不会再自动打开,此时如果再对该文件做操作,就会出错。所以最好指定文件名来CLOSE,并注意只关闭USROPN的文件。 |
最热门文章推荐:
>· 笔记本硬盘
>· hp笔记本电脑
>· 笔记本无线上网
>· 富士通笔记本
>· 清华同方笔记本
>· 笔记本选购
>· 长城笔记本
>· borland jbuilder
下一篇:帮忙看看这段程序的问题出在哪里?
↓相关文章:
- · 帮忙看看这段程序的问题出在哪里?
- · 《最后100天的AS400学习心情笔记》
- · 在一个PF中加一字段,用来表示记录的序号!
- · SLR60磁带机可以做200GB系统的全系统备份,何故?
- · 讨论系统设备的异动监控
- · 求助:存储过程的查找和COPY
- · 【步骤】使用SQL DTS功能实现从DB/2向SQL Server传输数据.
- · 请教:如何修改PF文件的CCSID值?
- · 关于触发器的初级问题,请用过的大虾指教
- · 如何使用FTP在PC和AS/400之间传输包含中文的文件
- · 各位前辈,小女子是400初学之初学
- · (原)在as400上更换硬盘
- · pcom各种版本的问题总结
- · (如何在iSeries(AS/400)將资料加密(ZT)
- · 急等 如何更改as/400 V4R5 如何更改IP地址
- · 通过Navigator配置实现PC端拨号登陆远程AS/400.
- · 高版本安全数据向低版本系统迁移问题
- · as400与windows如何互相传送文件
- · 【分享】如何实现直接从AS/400发送信息到指定的邮箱.
- · rpg的小问题谁能解决一下,先谢了!(新手)
- · CA连接不上,PCOMM正常使用,授权及网络正常。什么问题?
- · exfmt与write的区别
- · 在TCPIP基础上建立APPC连接
- · 硬盘利用率的问题
- · 如何利用RPG,CL和ACCESS制作一个条形码标签的打印程序?
- · domino的邮件问题 急! (居士快进)
- · 请教400上的文件问题
- · 如何用PC超级终端对RS6000完成控制及安装(希望是我的精品)
- · (原创) 7133-T40阵列故障解决实例
- · 又来临时抱佛脚了,请教s7a电源问题
- · 经验交流<如何在AIX下面更改before login banner>
- · 刚完成的一个hacmp 5.1 +db2 udb 8.1 ese环境下的HA配置!
- · [原创]SNORT&ACID install on AIX 5.2
- · 一光纤卡的问题的解决,有类似问题的可以参考
- · 使用SFU实现Windows和AIX文件共享-请求加精
- · ORACLE/RAC安装完全攻略
- · Step bye Step for Install the Domino server 7 on aix 5L 5.2
- · 199学习笔记(chap11)
- · 在cp时的怪问题
- · 一个系统频繁宕机(888 102 300 0C0)的案例分析与解决!!!
- · 个人总结-理解和使用aix的日志系统
- · VIO配置1
- · IY19375补丁打不上。-_-!!!
- · 老的文章不一定就没有用处了:)
- · 任何在aix下面看你的系统是32位还是64位的
- · 吃了一个“螃蟹”
- · 监视别人在登录后都输入了什么命令
- · Securing AIX 5L from Scratch
- · 如何确定pSeries和RS/6000 CPU的主频?
- · .kshrc的作用
- · AIX 5.2对用户登录界面的安全性的增强
- · 更改HACMP环境里网卡的ip地址
- · 做AIX rootvg的镜像
- · 替换SSA raid磁盘阵列中坏盘步骤
- · 2005-02-02 日的学习内容
- · 今天是大年初一
- · 谚语
- · awk将文件的两行合并为一行
- · aix 版本显示问题
- · Domino 6 AIX安装环境
- · aix操作系统的备份和恢复
- · 如何通过PC机的超级终端控制RS6000
- · HACMP的注意事项
- · AIX经验汇总
- · hacmp的定义和发展
- · hacmp 1.1.2--1.1.4(续1)
- · AIX中关于LVM中有几个关于容量的计算
- · AIX 初学者之梦
- · ODM
- · 开门大吉之我言
- · 2个lpar1个光驱的问题--NFS的应用
- · 还是嫩啊。
- · 三年之痒
- · AIX系统升级微码,打补丁.
- · 微码问题。
- · AIX学习笔记
- · AIX下,得到用户上次更改密码时间的脚本(原创)
- · AIX 性能调优-内存、CPU篇
- · AIX 性能调优-内存、CPU篇II
- · aix mount linux文件系统

