z/OS 1.12中的控制域回收利用

日期: 2010-09-08 作者:Robert Crawford翻译:黄永兵 来源:TechTarget中国 英文

尽管新技术层出不穷,但世界上最重要的信息仍然有一些驻留在VSAM中,即使经历了30年的进化,VSAM仍然有可改进的地方,在z/OS 1.12中,IBM给VSAM实施的一项改进就是控制域(CA)的回收利用。   问题   VSAM键顺序数据集(KSDS)由数据和索引组件组成,索引是一个由控制间隔(CI)和大量依赖集群大小的层组成的倒置树,上级CI指向下级CI,直到抵达最底层,这就是所谓的序列集,序列集包含数据组件中每个CA对应的CI,序列集CI中的每条记录都指向CA中的一个数据CI,VSAM象火车一样根据键顺序将序列集CI连接在一起。   当应用程序执行时,记录可能会被删除或插入到集群中,VSA……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

尽管新技术层出不穷,但世界上最重要的信息仍然有一些驻留在VSAM中,即使经历了30年的进化,VSAM仍然有可改进的地方,在z/OS 1.12中,IBM给VSAM实施的一项改进就是控制域(CA)的回收利用。

  问题

  VSAM键顺序数据集(KSDS)由数据和索引组件组成,索引是一个由控制间隔(CI)和大量依赖集群大小的层组成的倒置树,上级CI指向下级CI,直到抵达最底层,这就是所谓的序列集,序列集包含数据组件中每个CA对应的CI,序列集CI中的每条记录都指向CA中的一个数据CI,VSAM象火车一样根据键顺序将序列集CI连接在一起。

  当应用程序执行时,记录可能会被删除或插入到集群中,VSAM必须更新相应的索引CI,如果一个数据CI为空,VSAM就删除索引序列集CI中属于该数据CA对应的记录,如果整个CA为空,在它序列集CI中的所有记录同样也会消失。

  这样问题就来了,一个空CI却要维护它在序列集链表中的位置,如果应用程序在这个空CI拥有的键范围内重新插入记录会发生什么?如果应用程序在其它键范围插入新记录,VSAM会将它们放入已经被占用的数据CA中,留下孤立的CA在风中飘荡。

  CA永远得不到重新利用,实际上,如果应用程序在连续的高水位值插入键——假设键是一个时间戳——空CA将会稳步上升,直到数据集地址分配的末尾。因此有系统开发人员抱怨,实现一个完整无空置的KSDS是完全可行的。

  CA回收利用

  CA回收利用解决了拥有空CA的索引CI链表维护的问题,VSAM挂起索引CI2列表,它的位置与索引水平的数量和数据集的大小关联性很大。
当VSAM删除一个空CA时,它从序列集链表中移除指向它的索引CI,然后将其添加到自由链表中,当CA变空时,其它索引CI可以添加到这个链表,注意越高层的索引CI越容易被添加到自由链表中。

  当应用程序添加新记录时,VSAM将从自由链表获得一个空CA,并在序列集中它所在的位置重新插入索引CI,而不是插入到数据组件的末尾,这样不仅可以节省空间,而且还可以改善序列性能,减少重新组织的次数。

  当然,恢复是一个大问题,CA回收利用涉及到许多过程,任何一步出错都会失败,根据IBM的说法,如果在回收期间发生ABEND,VSAM将会尽最大努力完成操作,如果尽最大努力也失败了,回收算法将会保证KSDS不会遭到破坏,但可能会出现一些孤立空间。

  开启CA回收利用需要一点技巧,因为它可以在多个不同的级别激活,不同的级别默认值也不一样,默认情况下,在系统级的回收利用功能是关闭的,而在数据分类和数据集级别默认是开启的,因此,在激活这项功能之前,应该做好规划和协调。

  在系统级别,将IGDSMS* CA_RECLAIM参数的值设为DATACLASS就可以开启回收利用功能,在数据集级别有两种管理CA回收利用的方法,数据分类CA回收利用属性适用于成组的数据集,直到集群被删除和重新定义,它不会生效,IDCAMS ALTER命令可以在数据集级别固定回收利用,生效后再开放。

  IBM也更新了其它VSAM实用工具,例如,EXAMINE可以报告一个KSDS中空CA的数量,可以帮助用户确定CA回收利用是否有用,如果发现不完整的CA回收利用,它将会发出新的消息;LISTCAT可以显示CA回收利用是否被激活,以及发生了多少次回收利用;以前VERIFY一直未受到重视,但现在它多了一个RECOVER参数,可以完成被中断的回收。

  CA回收利用并不是每种数据集的最佳选择,例如,随机插入和删除记录的应用程序数据集就得不到任何好处,在很小的键范围删除记录的应用程序,之后又重新插入它们,可能存在性能问题,与此同时,注意CA回收利用是不可追溯的,即使开关已经打开,存在孤立CA的数据集不会丢失它们,直到有人重组数据集。

  最后,如果你准备在同一个Sysplex中混合使用多个z/OS版本,确保应用了所有兼容的PTF,不这样做可能会导致数据完整性问题。

作者

Robert Crawford
Robert Crawford

数据中心专家