




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 简介22 VSAM 数据集类型和结构22.1 VSAM 术语2一控制段(Control Interval)2例题一:控制区间1Control Interval 13例题二:控制区间2Control Interval 24例题三:控制区间3Control Interval 34二控制区(Control Area)5优化控制区域的大小(Optimizing Control Area Size)6一个大的控制区域的优点(Advantages of a Large Control Area Size)6一个大的控制区域的缺点(Disadvantages of a Large Control Area Size)6控制区域(CA)的大小牵连到几方面7三相对字节位置(Relative Byte Address)7四Spanned Record7五数据集(Cluster)9六访问控制块(Access Control Block)10七 记录102.2 VSAM 数据集类型10一ESDS 数据集12二KSDS 数据集14三RRDS 数据集27四VRRDS 数据集28五LDS数据集283 VSAM 的编目29一主编目(Master Catalog)30二用户编目(User Catalog)314 IDCAMS314.1 AMS 命令格式314.2 AMS 功能介绍324.3 AMS 命令的应用32一. DEFINE MASTERCATALOG32二 DEFINE USERCATALOG33三DEFINE CLUSTER33四REPRO35五LISTCAT364.4 AMS 实例361 简介VSAM 的全称为Virtual Storage Access Method,它是一种访问方法,用来组织数据记录并且利用编目实现数据集的维护。访问方法相当于接口的角色,是操作系统和应用程序之间的桥梁,主要的目的是提高数据存取的效率。z/OS 操作系统支持多种存取方法,包括:QSAM(排队顺序存取法)Queued Sequential Access Method,BSAM(基本顺序存取法)Basic Sequential Access Method,ISAM(索引顺序存取方法)IndexedSequential Access Method,BDAM(基本直接存取法)Basic Direct Access Method,BPAM(基本分区存取法)Basic PartitionedAccess Method,PDS-EPartitioned Data Set Extended 和OAMObject Access Method,这些访问方法统称为传统访问方法。VSAM 访问方法是第一个针对虚拟存取环境设计的访问方法,和以上那些传统访问方法相比较,VSAM 和操作系统的兼容性更好,并且具有高效率、多功能和安全性等特点。VSAM 能顺序或直接存取磁盘中固定和变动长度的记录,其读取记录的过程如下:1. VSAM 负责解释应用程序的逻辑请求并且决定需要使用的设备;2. VSAM 负责向操作系统申请输入和输出的操作;3. 操作系统执行实际的物理输入和输出操作;4. VSAM 将数据返回给应用程序处理。在实际的读取数据的过程中,当进行记录的顺序读取操作时,VSAM 会将单独的逻辑记录组成比较大的数据单元以减少I/O 的次数,然后操作系统以这个较大的数据单元为单位在DASD 和存储器之间进行交换。同样的,在顺序访问方法中,这种将记录组成较大数据单元的技术称为组块(Block)。VSAM 的在应用程序和操作系统之间扮演接口的角色,应用程序对VSAM 的调用类似于对子程序的调用。在汇编语言中,调用的是VSAM 的宏;在高级汇编语言中,则是编译器将I/O 操作的语句转换成对VSAM 程序的调用。VSAM 存取方法有更高的存取效率,更好的数据安全性和完整性,而且容易使用与管理,其特点如下:1适用于不同类型的作业方式,包括批处理作业和在线作业;2高效的存取效率,VSAM 存取记录时输入输出的单位是一个Control Interval (简称CI),而且加上Buffer Space 的应用,数据集的存取效率较高;3使用简单,VSAM 提供了一套很容易使用的命令,帮助用户建立和维护数据集;4集中管理,VSAM 通过编目机制实现集中管理;2 VSAM 数据集类型和结构2.1 VSAM 术语一控制段(Control Interval)Control Interval(简称CI)是VSAM 数据集(除了Liner Data Set 数据集以外)输入输出的单位,其结构如下图所示:图 1 Control Interval 结构上图中,RDF(Record Definition Field,记录定义字段)用来描述CI 中的记录信息,包括记录的长度和起始位置,每一个RDF 的长度为3 个字节。CIDF(Control Interval Definition Field)则是描述CI中FreeSpace 的大小和位置,长度为4 个字节。CIDF 包含两个字段,每个字段都是两个字节,第一个字段说明CI 中的未用空间的起始位置,第二个字段说明未用空间的长度。下面我们来看一个例子,见图2 ,CIDF 的第一个字段为零,说明CI 中的未用空间的偏移量为零;第二个字段为1020,说明这个未用空间的长度为1020 个字节。Control Interval 1图 2 CIDF 的字段说明从图1 可知,CIDF 存放在CI 的最右边,记录的存放是从CI 的左边开始,第一个记录存放在CI 的最左边的位置,而相应的RDF1 则存放在CI 的右边,紧跟CIDF。第二笔记录存放在第一笔记录之后,而相应的RDF2 存放于RDF1 之前,其余以此类推,由此可知在一个CI 中记录是从左往右连续存放,而RDF 则是从右往左存放,二者之间为自由空间。如果一个CI 中存放的所有记录的长度均相等的话,则整个CI 只有2 个RDF,一个RDF 说明第一个记录的长度,第二个RDF 说明CI 中记录的个数。CI 的大小最小为512 字节,最大为32k。例题一:控制区间1Control Interval 1控制区间的大小 = 512bytes字节记录长度 = 160bytes字节的记录记录定义域 仅需要2个RDFs因为所有记录是相同的长度。R1R2R3FSRDF2RDF2CIDF16016016022334记录长度 160 160 160 22 3 3 4 FS=自由空间 它的长度=22字节如何计算得出 FS=控制区间的大小512字节 160 x 3(三个长度均为160字节记录) - 2 x 3(RDF) 1 x 4(CIDF) = 512 480 6 4 = 22。例题二:控制区间2Control Interval 2控制区间的大小control interval size = 512字节 bytes 记录长度 所有记录有不同的长度 variable length records 记录定义域 对於每个逻辑记录需要1个RDFs(RDF1给记录1,RDF2给记录2等等)。R1R2R3R4FSRDF4RDF3RDF2RDF1CIDF130701101404633334 自由空间FS=512 130 70 110 140 4 x 3 4 x 1 =512 130 70 110 140 12 4 =4646bytes实际上可能是无用空间,因为扣除了 3 bytes RDF外,除非恰好在此CI内有一个 43 bytes记录需插入。例题三:控制区间3Control Interval 3控制区间的大小 = 512字节记录长度 记录1至3是80字节记录不同的长度。记录4和5有不同长度。 记录定义域 两个RDFs被用作给记录1至3。记录4和5各自有自RDF。R1R2R3R4R5FSRDF4RDF3RDF2RDF1CIDF808080100936333334FS = Free Space自由空间 = 512 80 x 3 100 93 4 x 3 4 = 512 240 100 93 12- 4 = 63CI Size 的选择CI的大小在不同的VSAM数据集中可以不同,但在一个数据集中必须相同。在创建数据集时,你可以用存取方法服务的DEFINE命令指定CI的大小,也可以让系统自动选择CI的大小。若从性能表现来考虑,让系统自动选择CI的大小往往会存在不能达到最优化性能的敝病。主要原因;1.自动选CI大小时,对於数据组件系统以能容纳下该记录为原则,而且按512字 节逐渐递增,而没有考虑物理区块与其之间关联。因此,自动选CI大小时就会出现CISIZE=15361.5k、30723 k、6144、7168等,这对性能表现影响较大。2.自动选CI大小时,系统没有去考虑该主文档究竟是联机使用或批量时使用,由於使用于不同环境,CISIZE必须适合于不同环境。一般联机使用的文件CISIZE不宜太大,因为此时主要是直接访问。而批量使用文件一般顺序读取应取较大CISIZE。当既有联机又有批量使用时,应优先考虑联机,批量在JCL中通过参数AMP加以优化。3.对於KSDS文件,它包含有数据组件及索引组件,原则上是当DATA CISIZE较小时,INDEX CISIZE应较大。反之,当DATA CISIZE较大时,INDEX CISIZE应较小。因此,充分考虑应用系统性能表现时,建议在你可以用存取方法服务的DEFINE命令时应指定CI的大小(包括数据和索引组件)。一个VSAM数据集在一个卷上可以佔用最多119 123个区域范围,或者佔用4GB字节。这裡要留意两问题:1. 119 123个区域范围并非意味著VSAM可扩充123次,因为初级分配是连续的一片,而次级分配可以由4片组成所需的空间请求,当扩充至119,就需预留4给最后一次扩充。2.佔用4GB,表示非SMS管理的vsam其佔用极限是4GB,超过此极限的VSAM,必须定义SMS管理的VSAM。2之32次方二控制区(Control Area)图 3 Control Area 的结构Control Area(简称CA)是由好几个连续的CI 所组成,见图3 所示:在同一个VSAM数据集里每一CA 均拥有相同数目的CI,CA 的大小也可以在定义VSAM数据集时指定。CA 的大小最小为一个磁道,最大为一个柱面。VSAM 数据集创建时所需要的磁盘空间大小是以CA 的大小为单位进行分配的。在一个VSAM数据集那控制区间被聚合在一起进入到直接存取存储器之内的固定长度的连续区域被称为控制区域Control Area (CA)。一个VSAM数据集实际上是由一个或更多的控制区域(CA)所组成。在一个控制区域(CA)内那控制区间(CI)的数量经过VSAM被固定即CI/CA). 一个控制区域(CA)最大的尺寸是一个柱面(cyl),而那最小的尺寸是DASD存储器的一条磁道(trk)。当你指定那空间的数量将被分配到一个数据集时,你隐式地定义那控制区域的大小。优化控制区域的大小(Optimizing Control Area Size)绝对没有显式地指定控制区域的大小。一般地那初级和次级空间分配的数量决定那控制区域的大小。若初级或者次级的分配是小於一个柱面,那较小的值被当作那控制区域的大小。若是以RECORDS被指定那分配被舍入到完整的磁道。若初级和次级两者的分配是等於或大於一个柱面,那控制区域的大小是一个柱面,对於一个控制区域那是最大值。下列例子说明通常如何通过那初级和次级分配的数量来决定那控制区域(CA)的大小。那索引控制区间(CI)的大小和缓冲空间同样可能影响那控制区域(CA)的大小。下列例子假定那索引CI的大小是足够大去处理在那CA内所有数据的CI,以及那缓冲空间是足够大不会影响那CI的大小。CYLINDERS(5,10), CA SIZE=1Cyl。KILOBYTES(100,50),系统决定那控制区域基于50KB,结果CA SIZE=一条磁道。RECORDS(2000,5) 假定10个记录将装载在一条磁道,结果CA SIZE=一条磁道。TRACKS(100,3) or TRACKS(3,100) 结果CA SIZE=三条磁道。因此,应以CYLINDERS分配空间 。一个大的控制区域的优点(Advantages of a Large Control Area Size)控制区域(CA)的大小对性能有重大的牵连,一个柱面的控制区域(CA)有下列优点: 有较少的控制区域分裂的可能性。 那索引是更加的被合併。一个索引记录寻址在一个控制区域内所有的控制区间。若那控制区域是大的,较少的索引记录和索引层次是必需的。对於顺序访问,一个大的控制区域减少索引记录的读取数量。 有较少的顺序集记录。那顺序集记录对於一个控制区域总是读给你。较少的记录意味花费较少的时间读取它们。若那索引的顺序集被嵌入在那控制区域復制的第一条磁道,当从那设备读取时减少那旋转固有的延迟。对於使用以高速缓冲设备,那IMBED选项是不被推荐的。一旦那磁道是在那高速缓冲存储器,没有实现性能的增益以及有价值的高速缓冲空间被使用为了復制的记录。为了同样的原因,復制的索引同样也不推荐。若你已经分配足够的缓冲,一个大的控制区域允许你同时去读取更多的缓冲进入到存储。若你是顺序地访问记录,大的控制区域是有益的。一个大的控制区域的缺点(Disadvantages of a Large Control Area Size)一个柱面控制区域的下列缺点同样也必须考虑:若有一个控制区域分裂,更多的数据被迁移.在顺序输入/输出期间,一个大的控制区域关联到更多的实际存储器(real storage)和更多的缓冲。控制区域(CA)的大小牵连到几方面:1.控制区域(CA)的大小在定义DEFINE该VSAM时是没有任何参数可以显式地去指定CA SIZE,而它是隐式地由你定义时所要求分配空间的单位及数量而确定的。一般为取得控制区域(CA)的最大值,简单地规定空间分配以柱面cylinder为单位。2.定义VSAM数据集时,存取方法服务就确定了CA SIZE,从而也就确定了CI/CA,即每个控制区域(CA)内包含多少个控制区间(CI)。它牵连到索引部分CI SIZE即INDEX CISZ,这也就关联到索引部分的两个组成部件;Index Se索引集和Sequence Set顺序集,从而牵连到INDEX LEVEL,那就需考虑BUFFER之赋值。有关内容留待VSAM高级课程再论述。三相对字节位置(Relative Byte Address)相对字节位置(简称RBA)是指VSAM 数据集中记录的相对位置,从数据集的起始位置开始计算,VSAM 将数据看成连续的字节流,RBA 使得记录的地址可以实现设备无关性。下面我们看个例子,如图4 所示:图4 相对字节位置第一条记录的RBA 为零,第二条记录的RBA 为第一条记录的长度,也就是10,第三条记录的RBA 为第一条记录的长度加上第二条记录的长度,也就是20;其余以此类推。同理每一CI 的RBA 计算方法与CI 中记录的RBA 计算方式相同。由RBA 的定义可知RBA 与CI 在内存中的实际位置无关,它只是前面各CI 之长度和。四Spanned Record如果记录长度超过一个CI 大小的称为Spanned Record,如下图所示:Spanned Record 的最大长度是一个CA 的长度减去VSAM 的控制信息的长度,而且只适用于KSDS 和ESDS。图 5 Spanned Record 结构某些数据集当其记录的长度相差很大时,且特长的逻辑记录是个别的,若指定为跨越记录,往往可节省很多资源。以下举例来记明;例如第一个逻辑记录长度2,000字节,第二个逻辑记录长度10,000字节,第三个逻辑记录长度2,000字节的数据集。是否指定跨越记录对空间使用量之比较。没指定是跨越记录,要包含10,000字节之记录,控制区间应10k才行。R1=2000 bytes R2=10000bytes R3=2000bytes没有SPANNED RECORDS CI SIZE = 10240B = 10 KBCI1R1FSControl InformationCI2R2FSControl InformationCI3R3FSControl InformationR1(CI1),R2(CI2),R3(CI3),用了30K包含三个记录指定跨越记录,则 CISIZE=4096bytes, R1=2000 bytes R2=10000bytes R3=2000bytesCI1R1FSControl InformationCI5R3FSControl InformationR2R2SEG1ControlInfoR2Seg1ControlInfoR2Seg2ControlInfoCI2CI3CI4R2 used 3 CI(4K)R1 used 1 CI(4K)R2 used 1 CI(4K)R1(CI1)、R2(CI2+CI3+CI4)、R3(CI5) 控制区间之大小为4K,each CI(4K),the three records can be stored in 4K X 5 =20K(20480bytes)三个记录共用了五个大小为4K的控制区间,总数是20K。前者用了30K。五数据集(Cluster)在z/OS 系统中,Cluster 是一个逻辑概念,是指一个逻辑数据集,由若干个物理数据集组成。只有考虑VSAM 数据集的物理部分的时候,Cluster 和Data Set 之间才存在区别。特别是KSDS Cluster,KSDS cluster 包含两个物理数据集,一个数据集中是实际的数据记录,一个数据集是索引部分。如下图所示:图 6 KSDS Cluster而其它的VSAM 数据集,包括ESDS,RRDS 和LDS 数据集,cluster 名称和Data Set 名称则是指向相同的数据集,每个cluster 只包含一个物理数据集,即数据部分。六访问控制块(Access Control Block)访问控制块(简称ACB)是应用程序定义VSAM 数据集和指定如何处理的控制块。ACB 的作用主要是使用符号名称定义数据集,指定应用程序如何处理数据集和其它的一些选项。ACB的作用和数据控制块Data Control Block(简称DCB)是一样的,但是DCB 的处理对象是非VSAM 数据集(比如顺序数据集)。七访问方法服务(Access Method Services)访问方法服务(简称AMS)是操作系统提供的实用程序,主要用来管理和维护VSAM 数据集,比如定义VSAM 数据集,为数据集分配磁盘空间,将非VSAM 数据集转换成VSAM数据集等,同时AMS 也可以对非VSAM 数据集操作。八集成编目访问方法服务(IntegrateD Catalog Access Method Services)集成编目访问方法服务(简称IDCAMS)是VSAM AMS 实用程序的名称,IDCAMS 为程序开发人员和系统程序员提供了方便的使用方法,它的主要功能包括定义VSAM 数据集,加载数据集,拷贝和备份数据集,打印数据集的内容,改变数据集的某些属性,显示数据集的属性和统计信息,还有删除数据集等,具体的使用方法见4 。七 记录逻辑的记录:在一个VSAM数据集逻辑记录被存储是不同於非VSAM数据集的逻辑记录。一个逻辑记录是一个信息单元用来存储在VSAM数据集。真实的记录:一个真实的记录是与设备相关的,当那数据集被定义及通过编目CATALOG来管理。VSAM使用一个控制区间(CI)作为它的信息传输的最小单元。2.2 VSAM 数据集类型目前VSAM支援五种数据集结构:0Key-sequenced data set (KSDS) 关键码顺序数据集。0Entry- sequenced data set (ESDS) 进入码顺序数据集。 Fixed-length relative record data set (RRDS) 定长相对记录数据集。 Variable-length relative record data set (VRRDS)变长相对记录数据集。 Linear data set (LDS)线性数据集。前三者早期已有的, 后两者是近期新增的。VSAM支持五大种不同类型的数据集:(1) 进入顺序数据集Entry-Sequenced Data Set (ESDS),ESDS 数据集记录的存放顺序是按照记录进入数据集的先后顺序,记录的读取是通过地址访问,每一条记录的存放与记录的内容无关并且字节地址不能改变。ESDS 也被称为顺序VSAM 数据集,所以ESDS 数据集比较适合记录顺序处理的应用程序,在大部分应用程序中,ESDS 的处理方式和顺序数据集是相似的。(2) 索引顺序数据集Key-Sequenced Data Set (KSDS),KSDS 数据集记录的存放按照记录的索引顺序,索引决定记录的存放顺序。KSDS 数据集的记录既支持顺序处理也支持随机处理。有些应用程序要求数据集有索引字段,索引可以是顾客编号,也可以是员工编号,每个索引可以唯一标识一条记录。从概念上讲,KSDS 数据集有些类似非VSAM 数据集的索引顺序数据集,但是执行效率比索引顺序数据集要高。(3) 相对记录数据集Relative Record Data Set (RRDS),在RRDS 数据集中,整个存储空间被分成一个个的片(slot),slot 可以是等长的也可以是不等长的,每个slot有一个编号,称为相对记录编号(Relative Record Number),简称为RRN。记录存储在与其RRN 值相同的slot 中,RRDS 的RDF 用来记录的随机读取是通过RRN来实现的。RDF 标识相应的slot 是否空闲或者被占用。RRDS 有些类似于表格形式的文件。如下图所示:图 7 RRDS 的记录存储方式(4) 线性数据集Linear Data Set (LDS),LDS 是一种只包含数据而没有控制信息的数据集,一个LDS 数据集被分成为blocks,应用程序按照物理顺序读取这些blocks,每个LDS 的block 的长度为4096 字节。如下图所示:图 8 LDS 数据集结构一ESDS 数据集图 9 ESDS 结构ESDS 数据集仅由数据部分(Data Component)组成,其结构如图9 所示。ESDS 数据集中存放的记录可以是定长也可以是变长,但是CI 中不能预留Free Space。记录的存放方式按照记录写入的先后顺序排列,所以在本质上ESDS 是一个顺序数据集。因为每一条记录的存储位置不能改变,因此增加记录只能加在数据集的最后面,不允许从中间插入;更新记录时,新记录的长度必须与原记录相同。此外对于不需要的记录,只能在逻辑上进行删除,无法从磁盘中真正删除,所以程序开发人员必须在程序中自行判断某条记录是否已被删除。在应用开发中,能够对ESDS 的记录进行存取操作的程序设计语言有ASSEMBLER,RPG,PL/I,COBOL 和FORTRAN。一个ESDS是可相比拟的一个顺序非VSAM数据集。在感觉上,那记录以它们进入在数据集的次序来顺序,较佳于通过关键码域在那逻辑记录。这可以是定长或变长的记录。所有新的记录是放置在那数据集的结尾。已有的记录决不能被删除。若那应用想要去删除一个记录,它必须标记那记录作为非活动的。至于VSAM关注的是那记录不是被删除。它是那应用程序的职责去标记那记录作为无效。记录可以被更新,但长度没有改变。为了改变一个记录的长度,你必须或者存储它在那数据集结尾当作一个新的记录,或者越过一个相同长度已有的记录,那你已经标记它当作非活动的。一个记录可以通过它的相对字节地址(RBA)顺序地或随机地访问。1. 顺序地处理:VSAM自动地按存储的顺序检索记录。顺序地处理可以从头开始或者在一个数据集中间的某处起动,顺序处理执行前决定它的位置是必需的。 2. 直接处理:当一个记录被载入或增加时,VSAM指出它的相对字节地址(RBA)。为了直接地检索,你必须对於那个记录提供其相对字节地址 (RBA)作为一个搜索的根据。虽然一个ESDS不能包含一个索引部分,你可建造一个更替索引去保存这些相对字节地址(RBA)的磁道。对於一个ESDS跳跃式顺序地处理是不允许的。一个进入顺序数据集与一个顺序(非VSAM)数据集是类似的。它包含可以或者是跨越或者非跨越的记录。如下图所示,记录通过它们进入在数据集的次序被排序,而不是通过在那逻辑记录的一个键域。R1R2R3R5R4Entry-Sequenced Data Set二KSDS 数据集KSDS 数据集由数据部分(Data Component)及索引部分(Index Component)所组成,其结构如下图所示,INDEX COMPONNENTDATA COMPONNENT图 10 KSDS 数据集结构在KSDS 数据集中,每个逻辑记录都有一个索引,记录按照索引的升序排列,索引的长度是相同的,在每一条记录中索引都是相同的数据项。索引值必须是唯一的而且是连续的,KSDS 数据集的逻辑记录长度可以是定长的也可以是变长的,KSDS 的访问方法有顺序存取,直接存取和定位顺序存取。首先我们来讨论KSDS 的Data Component,在建立KSDS 数据集时,VSAM 根据输入记录的索引,按照升序将记录存放到适当位置,同时产生索引部分。KSDS 的数据部分具有如下属性:1. 若干记录组成CI;2. 记录可以为定长也可以是变长;3. 若干CI 组成CA4. 一个CA 中的CI 可能不是按序排列,但是每个CI 中的记录一定是按照索引的顺序排列的。当第一个CI 存入某些记录后,为了使CI 内的Free Space 保持一定的比例,VSAM 会将下一条记录存放到下一个CI 里,依此类推,直到所有的记录都按索引的顺序存入数据集内。下面我们再来看看KSDS 数据集的索引部分,KSDS 数据集的索引部分具有如下属性:1. 索引部分也分为CI;2. 索引CI 被作为独立的记录,包含索引信息;3. 索引记录组织成为树结构,在树的最顶层只有一个索引记录。索引记录有两种类型,一种称为Index Set ,简称为IS,IS 包含较高层的索引信息;另外一种称为Sequence Set ,简称为SS,SS 包含最低层的索引信息。SS 中的每条记录代表数据部分的一个CA,每条SS 记录中的入口个数取决于相应CA 中CI 的个数。每个SS 记录中的入口包含一个指向相应CI 的指针,这个指针就是相应CI 的RBA。索引的结构如下图所示:图 11 索引结构Index Set L2C fp us 374 180 47 HH fp fp us 634 472 CSequence Set L1INDEXVVS 10 30 35 47 fs C 68 75 100 180 fs C205 240 331 37 4 fs C free control intvl C385 407 408 472 fs C544 545 634 free C free control intvl C free control intvl CDATAVVData CIData CICACAH unused 634 374 control fieldsC=control fieldsfp=pointer to free CIfs=free space us=unused spaceH=header inf.S=horizontal pointerV=vertical pointerOverview(综览) of the VSAM architecture (Index Level 2)索引层2IndexSetHD 2799 4200 6705 RHD 1333 2363 2798 RHD 4200 RHD 1021 1051 1300 RHD 1401 2344 2363 RINDEXSequence Set1001 1002 1009 fs C1052 1060 1080 fs C1022 1025 1033 fs C1334 1350 1400 fs C1402 1424 1428 fs C2345 2352 2363 fs Cfs=free Space C=Control informationCA1CA2Overview(综览) of the VSAM architecture (Index Level 3)索引层3此图说明主要索引的层次和表示索引纪录的SS和数据组件的CA的关系。在SS重视艺术旬处理水平指针及垂直指针如何指向数据。图中只是示意,键值实际上在索引中是压缩的。在KSDS数据集的索引组件的记录实际上是一个CI被视为一个记录,所以其每个CI含有CIDF及RDF各一个即7个字节。因此,索引组件的平均记录长度(AVGLRECL)是0,而最长记录长度是Index CISZ - 7。当索引组件的CISIZE的大小不恰当时,就会这致INDEX LEVEL层次2以上,一般INDEX LEVEL为2是属通常的情况,若为3层以上就会影响直接存取的性能表现。但是,对於很大的KSDS文件,未必能通过调整索引组件的CISIZE,而将INDEX LEVEL降为两层。当数据组件的CA大小为1柱面时,Index的REC-TOTAL - 1就表明数据组件佔用空间是多少柱面。请参阅INDEX LEVEL2的KSDS树型结构图应易於清晰知道。从上述VSAM KSDS architecture的示意图可以归纳出下列结论:hKSDS数据集结构是一个树形的数据结构。它有两个组成部分(Two Component): 数据部分(Data Component)和索引部分(Index Component)。这两部分既互相关联,但也相对独立。在某些特殊情况下(例如当VSAM数据集被毁坏引致两部分不同 步),必要时也可将数据部分(Data Component)当作一个独立数据集来抢救(恢復)该数据集(留待VSAM深造那卷再讨论)。1. KSDS数据集的索引部分(Index Component)也可视为一个VSAM数据集,它也由控制区间(CI)包含索引记录,其内也包含有CIDF及RDF这控制信息。但与数据部分(Data Component)又有所不同。 Data Component的每个CI内可包含若干个逻辑记录,因此,有1个CIDF及若干个RDF,而RECSIZE在定义时指定,若为定长则AVGLRECL=MAXLRECL,若为变长则AVGLRECLMAXLRECL。前者为逻辑记录的平均长度,后者为最大长度。Index Component的每个CI内仅包含一个索引记录,而它的RECSIZE用户不能直接指定,它是由存取方法服务(AMS)维护。监於的每个CI内仅包含一个记录,故仅需1个CIDF(4bytes)及1个RDF(3bytes)共7bytes。故索引记录的AVGLRECL=0,而MAXLRECL=Index CISZ - 7,这样,数据集的索引部分(Index Component)的RECSIZE就与Index的CISZ相关联,为了考虑到VSAM有较佳的性能表现,我们总是建议对于KSDS数据集定义时都要求用户指定其CISZ,而Index的CISZ如何选择,除了一般原则外,是可以通过键的长度及Data Component的CI/CA较精密计算出来。2. KSDS数据集的数据部分(Data Component)当有新记录插入或考虑到原有记录因更新而变长时的需要,可以在定义时指定自由空间FSPC。而索引部分(IndexComponent)就不能指定自由空间FSPC。但同样索引部分(Index Component)可独立指定所分配的空间数量、驻留的卷、CISIZE。它有这部分的CI/CA,且有独特的INDEX LEVEL信息。当分配空间时,是以柱面为单位时,其CA大小原则上是一个柱面,从而CI/CA的值也基本固定:1. 对於变长VSAM文件,由於程序设计时那最长记录长度(MaxLrecl)基本上是已确定的,而那平均记录长度(AvgLrecl)往往被误解为最小记录长度或者盲目地随意给一个值,而又不会将这不合理的赋值明显地被暴露出来,这就造致我们的计算与实际情况相差很大,再加上记录被更新重新写入时,原来记录长度变长。种种原因,都对计算变长VSAM带来很大的误差。但稍为準确地指定AvgLrecl就能提高计算的準确性。2. 对於变长VSAM文件,一般一定有某些域(field)是基本的,那些是基本的域(field)应该清楚,每个域(field)的长度也已知道,以上这些就构成常量。那麼 AVGLRECL = fixed field length + variable field length。索引部分由Sequence Set和Index Set组成,其中Sequence Set的大小为一个CI,对应一个数据CA,SS包含指向下一个SS的水平指针和对应的每个CI的最大的索引值以及相应指针。Index Set的包含指向低一级索引的的垂直指针和最大的索引值。SS的指针超过一个CI大小时,系统会建立多级的IS,但是在顶层只能有一个IS。KSDS数据集支持直接存取,顺序存取和定位顺序存取。在KSDS 数据集中以记录索引值直接存取某一条记录的过程是这样的:1. 先查询顶层IS 的索引值,决定要找的记录索引是位于下一层的哪一个IS;2. 循序寻找这个IS,以决定要查找的索引在哪一个Sequence Set 中;3. 根据SS 的记录,对索引所在的CI 进行定位;4. 将该CI 从DASD 读入到存储器,取出所要的记录传送到程序中,完成直接读取记录的操作。而顺序存取记录的过程如下:1. 定位到第一个CI;2. 从第一个记录开始,顺序读取每一条记录,直至完成所有的记录读取操作。定位顺序存取的过程如下:1. 首先按照直接存取的方式定位到需要读取的指针;2. 再按照顺序存取方式从指定的记录开始顺序处理,直至完成所有的操作。在KSDS 里插入新记录时VSAM 的处理方式如下:将新记录插入数据集时,首先要决定该记录要存入那一个CI 内,存放的基本规则是按照索引的升序。下面我们来看一个例子:图 12是目前已经存在的CA 的结构,假设我们需要增加一条索引值为2007 的记录。增加的记录索引值为2007,大于2005 而小于2008,显然应该放入第一个CI,增加后的情况如图 13 所示。图 12 新增记录前图 13 新增记录后记录插入时可能发生三种情况:(1)当插入新记录到某个CI 时,如果有足够的Free Space,此CI 内原有记录的索引值大于新记录的索引值都往后移位置,使新记录能插入其中,这种情况上面已经描述过,2008的记录往后移,新记录2007 放在2005 和2008 之间,同时建立相应的RDF。(2)若插入时CI 内没有足够的Free Space,而CA 内有空的CI 时,VSAM 会产生CI Split的操作,另外寻找一个空的CI,将原CI 后半部分的记录加上新插入的记录以及它们所对应的RDF 全部移到空的CI 内,然后,将Index Component 里有关的记录加以修改。如图 14 所示.。下面假设我们需要插入的记录为4046,按照索引的顺序,新纪录4046 应该插入CI1,插入在4041 和4050 之间,但是CI1 中已经没有FreeSpace,VSAM 将执行CI Split 操作,将CI1 的后一半记录搬入空闲的CI3 中,建立新纪录的RDF,并且修改相应的索引部分的内容。(3)第三种情况是新记录要插入,CI 中没有足够的Freespace,而且CA 中也没有空的CI 时,VSAM 会产生CA Split 的操作。在数据集的最后,增加一个CA,把原有CA 内半数CI 的记录移到新的CA 内,再将新记录插入适当的位置,同时修改Index Component 内的相应内容。假设新记录4074 要插入数据集,按照索引的顺序,新记录4074 应该插入CI2,但是CI2 中已经没有FreeSpace,所以VSAM 会寻找空闲的CI,但是整个CA 中已经没有空闲的CI,所以VSAM 在数据集的后面增加一个新的CA,执行CA Split 操作,将CA1 的一半记录搬入CA2中,再将新记录插入相应的位置,设置相关的RDF,同时修改索引部分的相关内容。CA Split的过程如图15 所示。图 14 CI Split图 15 CA SplitKSDS 数据集删除记录时VSAM 的处理方式如下,将KSDS 数据集内存在的记录删除时,系统会将被删除记录之后的记录往前移,将删除的记录所占的空间收回成为Free Space,并修改索引部分的相关内容。KSDS 数据集更新记录时VSAM 的处理方式如下,更新记录时VSAM 处理的情况分为三种:1. 更新的记录长度不变时VSAM 将更新记录取代原有的旧记录;2. 更新后记录长度缩短,VSAM 的处理方法与处理记录的删除相同,将多余的空间收回称为Free Space;3. 更新后记录长度加长,VSAM 的处理方法与处理记录的插入相同。通过上面的讨论,KSDS 数据集的特点如下:(1)记录按照记录索引值的升序存储;(2)记录存取方式有顺序存取(Sequential Access),直接存取(Direct Access)和定位顺序存取(Skip-Sequential Access);(3)记录格式为变长或者定长;也可以为Spanned Record.;(4)可预留Free Space 供插入记录或更新记录时增加原记录长度用;(5)新增加的记录可以在数据集的任何地方插入;(6)允许数据集内原有记录长度的改变,即可以增减或者缩短原有记录的长度;(7)可以真正删除记录并且将记录所占用的位置收回,称为FreeSpace;(8)KSDS 数据集可以建立次索引,并且以次索引对记录进行存取;(9)根据以上的特点,可以看出记录的RBA 值可以产生改变。在应用开发中, 能够对KSDS 数据集的记录进行存取操作的程序设计语言有ASSEMBLER,RPG,PL/I 和COBOL。提供给程序的顺序记录:111215182025HD 25 39 50RIndex SetHD 14 19 25RHD 30 37 39RHD 40 45 50 RSEQUENCEset11 12 fs C 20 25 C15 18 fs C Data CI 1Data CI 2Data CI 1CA 1bcfs -free spaceC-control inf. field (a). VSAM 於顺序集的始端开始和找出第一个条目14。它指向数据控制区间1。(b). 当程序发出读取一个记录时,VSAM供给程序从控制区间1(开始於记录11)的下一个顺序记录。(c). 当在控制区间1最后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年人力资源招聘面试技巧面试官必-备手册与模拟题集
- 2025年驻外机构招聘面试题解析
- 小树有多少了棵教学课件
- 对称图形 圆的教学课件
- 2025年学校安全管理知识测试题及答案
- 课件三维模型展示
- 2025年环境安全考试题及答案
- 2025年安全生产管理人员考试题库大全
- 2025年企业安全考核题库答案解析
- 2025年家庭安全知识手册题目及答案
- 《SPC统计过程控制》课件
- GB/T 40073-2021潜水器金属耐压壳外压强度试验方法
- GB/T 3624-2010钛及钛合金无缝管
- GB/T 14153-1993硬质塑料落锤冲击试验方法通则
- (完整版)人教版八年级下册《道德与法治》期末测试卷及答案【新版】
- 维护新疆稳定 实现长治久安课件
- 北京大学人民医院-医疗知情同意书汇编
- 档案管理员述职报告9篇
- 舞台灯光基础知识教学课件
- 牙体牙髓病最全课件
- 脑卒中的功能锻炼课件
评论
0/150
提交评论