Virtual Storage Access MethodVSAM详细资料.docx
- 文档编号:9543930
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:46
- 大小:646.56KB
Virtual Storage Access MethodVSAM详细资料.docx
《Virtual Storage Access MethodVSAM详细资料.docx》由会员分享,可在线阅读,更多相关《Virtual Storage Access MethodVSAM详细资料.docx(46页珍藏版)》请在冰豆网上搜索。
VirtualStorageAccessMethodVSAM详细资料
1简介2
2VSAM数据集类型和结构2
2.1VSAM术语2
一.控制段(ControlInterval)2
例题一:
控制区间1[ControlInterval1]3
例题二:
控制区间2[ControlInterval2]4
例题三:
控制区间3[ControlInterval3]4
二.控制区(ControlArea)5
优化控制区域的大小(OptimizingControlAreaSize)6
一个大的控制区域的优点(AdvantagesofaLargeControlAreaSize)6
一个大的控制区域的缺点(DisadvantagesofaLargeControlAreaSize)6
控制区域(CA)的大小牵连到几方面7
三.相对字节位置(RelativeByteAddress)7
四.SpannedRecord7
五.数据集(Cluster)9
六.访问控制块(AccessControlBlock)10
七.记录10
2.2VSAM数据集类型10
一.ESDS数据集12
二.KSDS数据集14
三.RRDS数据集27
四.VRRDS数据集28
五.LDS数据集28
3VSAM的编目29
一.主编目(MasterCatalog)30
二.用户编目(UserCatalog)31
4IDCAMS31
4.1AMS命令格式31
4.2AMS功能介绍32
4.3AMS命令的应用32
一.DEFINEMASTERCATALOG32
二.DEFINEUSERCATALOG33
三.DEFINECLUSTER33
四.REPRO35
五.LISTCAT36
4.4AMS实例36
1简介
VSAM的全称为VirtualStorageAccessMethod,它是一种访问方法,用来组织数据记录并且利用编目实现数据集的维护。
访问方法相当于接口的角色,是操作系统和应用程序之间的桥梁,主要的目的是提高数据存取的效率。
z/OS操作系统支持多种存取方法,包括:
QSAM(排队顺序存取法)-QueuedSequentialAccessMethod,BSAM(基本顺序存取法)-BasicSequentialAccessMethod,ISAM(索引顺序存取方法)-IndexedSequentialAccessMethod,BDAM(基本直接存取法)-BasicDirectAccessMethod,BPAM(基本分区存取法)-BasicPartitionedAccessMethod,PDS-E-PartitionedDataSetExtended和OAM-ObjectAccessMethod,这些访问方法统称为传统访问方法。
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存取记录时输入输出的单位是一个ControlInterval(简称CI),而且加上BufferSpace的应用,数据集的存取效率较高;
3.使用简单,VSAM提供了一套很容易使用的命令,帮助用户建立和维护数据集;
4.集中管理,VSAM通过编目机制实现集中管理;
2VSAM数据集类型和结构
2.1VSAM术语
一.控制段(ControlInterval)
ControlInterval(简称CI)是VSAM数据集(除了LinerDataSet数据集以外)输入输出的单位,其结构如下图所示:
图1ControlInterval结构
上图中,RDF(RecordDefinitionField,记录定义字段)用来描述CI中的记录信息,包括记录的长度和起始位置,每一个RDF的长度为3个字节。
CIDF(ControlIntervalDefinitionField)则是描述CI中FreeSpace的大小和位置,长度为4个字节。
CIDF包含两个字段,每个字段都是两个字节,第一个字段说明CI中的未用空间的起始位置,第二个字段说明未用空间的长度。
下面我们来看一个例子,见图2,CIDF的第一个字段为零,说明CI中的未用空间的偏移量为零;第二个字段为1020,说明这个未用空间的长度为1020个字节。
ControlInterval1
图2CIDF的字段说明
从图1可知,CIDF存放在CI的最右边,记录的存放是从CI的左边开始,第一个记录存放在CI的最左边的位置,而相应的RDF1则存放在CI的右边,紧跟CIDF。
第二笔记录存放在第一笔记录之后,而相应的RDF2存放于RDF1之前,其余以此类推,由此可知在一个CI中记录是从左往右连续存放,而RDF则是从右往左存放,二者之间为自由空间。
如果一个CI中存放的所有记录的长度均相等的话,则整个CI只有2个RDF,一个RDF说明第一个记录的长度,第二个RDF说明CI中记录的个数。
CI的大小最小为512字节,最大为32k。
例题一:
控制区间1[ControlInterval1]
控制区间的大小=512bytes字节
记录长度=160bytes字节的记录
记录定义域―仅需要2个RDFs因为所有记录是相同的长度。
记录长度16016016022334
FS=自由空间它的长度=22字节如何计算得出
FS=控制区间的大小512字节–160x3(三个长度均为160字节记录)-2x3(RDF)–1x4(CIDF)
=512–480–6–4=22。
例题二:
控制区间2[ControlInterval2]
控制区间的大小[controlintervalsize]=512字节[bytes]
记录长度―所有记录有不同的长度[variablelengthrecords]
记录定义域―对於每个逻辑记录需要1个RDFs(RDF1给记录1,RDF2给记录2等等)。
R1
R2
R3
R4
FS
RDF4
RDF3
RDF2
RDF1
CIDF
130
70
110
140
46
3
3
3
3
4
自由空间FS=512–130–70–110–140–4x3–4x1
=512–130–70–110–140–12–4=46
46bytes实际上可能是无用空间,因为扣除了3bytesRDF外,除非恰好在此CI内有一个43bytes记录需插入。
例题三:
控制区间3[ControlInterval3]
控制区间的大小=512字节
记录长度―记录1至3是80字节记录不同的长度。
记录4和5有不同长度。
记录定义域―两个RDFs被用作给记录1至3。
记录4和5各自有自RDF。
R1
R2
R3
R4
R5
FS
RDF4
RDF3
RDF2
RDF1
CIDF
80
80
80
100
93
63
3
3
3
3
4
FS=FreeSpace自由空间
=512–80x3–100–93–4x3–4
=512–240–100–93–12-4=63
CISize的选择
CI的大小在不同的VSAM数据集中可以不同,但在一个数据集中必须相同。
在创建数据集时,你可以用存取方法服务的DEFINE命令指定CI的大小,也可以让系统自动选择CI的大小。
若从性能表现来考虑,让系统自动选择CI的大小往往会存在不能达到最优化性能的敝病。
主要原因;
1.自动选CI大小时,对於数据组件系统以能容纳下该记录为原则,而且按512字节逐渐递增,而没有考虑物理区块与其之间关联。
因此,自动选CI大小时就会出现CISIZE=1536[1.5k]、3072[3k]、6144、7168等,这对性能表现影响较大。
2.自动选CI大小时,系统没有去考虑该主文档究竟是联机使用或批量时使用,由於使用于不同环境,CISIZE必须适合于不同环境。
一般联机使用的文件CISIZE不宜太大,因为此时主要是直接访问。
而批量使用文件一般顺序读取应取较大CISIZE。
当既有联机又有批量使用时,应优先考虑联机,批量在JCL中通过参数AMP加以优化。
3.对於KSDS文件,它包含有数据组件及索引组件,原则上是当DATACISIZE较小时,INDEXCISIZE应较大。
反之,当DATACISIZE较大时,INDEXCISIZE应较小。
因此,充分考虑应用系统性能表现时,建议在你可以用存取方法服务的DEFINE命令时应指定CI的大小(包括数据和索引组件)。
一个VSAM数据集在一个卷上可以佔用最多119~123个区域范围,或者佔用4GB字节。
这裡要留意两问题:
1.119~123个区域范围并非意味著VSAM可扩充123次,因为初级分配是连续的一片,而次级分配可以由4片组成所需的空间请求,当扩充至119,就需预留4给最后一次扩充。
2.佔用4GB,表示非SMS管理的vsam其佔用极限是4GB,超过此极限的VSAM,必须定义SMS管理的VSAM。
2之32次方
二.控制区(ControlArea)
图3ControlArea的结构
ControlArea(简称CA)是由好几个连续的CI所组成,见图3所示:
在同一个VSAM数据集里每一CA均拥有相同数目的CI,CA的大小也可以在定义VSAM数据集时指定。
CA的大小最小为一个磁道,最大为一个柱面。
VSAM数据集创建时所需要的磁盘空间大小是以CA的大小为单位进行分配的。
在一个VSAM数据集那控制区间被聚合在一起进入到直接存取存储器之内的固定长度的连续区域被称为控制区域[ControlArea(CA)]。
一个VSAM数据集实际上是由一个或更多的控制区域(CA)所组成。
在一个控制区域(CA)内那控制区间(CI)的数量经过VSAM被固定[即CI/CA).一个控制区域(CA)最大的尺寸是一个柱面(cyl),而那最小的尺寸是DASD存储器的一条磁道(trk)。
当你指定那空间的数量将被分配到一个数据集时,你隐式地定义那控制区域的大小。
优化控制区域的大小(OptimizingControlAreaSize)
绝对没有显式地指定控制区域的大小。
一般地那初级和次级空间分配的数量决定那控制区域的大小。
若初级或者次级的分配是小於一个柱面,那较小的值被当作那控制区域的大小。
若是以RECORDS被指定﹐那分配被舍入到完整的磁道。
若初级和次级两者的分配是等於或大於一个柱面,那控制区域的大小是一个柱面,对於一个控制区域那是最大值。
下列例子说明通常如何通过那初级和次级分配的数量来决定那控制区域(CA)的大小。
那索引控制区间(CI)的大小和缓冲空间同样可能影响那控制区域(CA)的大小。
下列例子假定那索引CI的大小是足够大去处理在那CA内所有数据的CI,以及那缓冲空间是足够大不会影响那CI的大小。
CYLINDERS(5,10),CASIZE=1Cyl。
KILOBYTES(100,50),系统决定那控制区域基于50KB,结果CASIZE=一条磁道。
RECORDS(2000,5)假定10个记录将装载在一条磁道,结果CASIZE=一条磁道。
TRACKS(100,3)orTRACKS(3,100)结果CASIZE=三条磁道。
因此,应以CYLINDERS分配空间。
一个大的控制区域的优点(AdvantagesofaLargeControlAreaSize)
控制区域(CA)的大小对性能有重大的牵连,一个柱面的控制区域(CA)有下列优点:
§有较少的控制区域分裂的可能性。
§那索引是更加的被合併。
一个索引记录寻址在一个控制区域内所有的控制区间。
若那控制区域是大的,较少的索引记录和索引层次是必需的。
对於顺序访问,一个大的控制区域减少索引记录的读取数量。
§有较少的顺序集记录。
那顺序集记录对於一个控制区域总是读给你。
较少的记录意味花费较少的时间读取它们。
§若那索引的顺序集被嵌入在那控制区域復制的第一条磁道,当从那设备读取时减少那旋转固有的延迟。
对於使用以高速缓冲设备,那IMBED选项是不被推荐的。
一旦那磁道是在那高速缓冲存储器,没有实现性能的增益以及有价值的高速缓冲空间被使用为了復制的记录。
为了同样的原因,復制的索引同样也不推荐。
§若你已经分配足够的缓冲,一个大的控制区域允许你同时去读取更多的缓冲进入到存储。
若你是顺序地访问记录,大的控制区域是有益的。
一个大的控制区域的缺点(DisadvantagesofaLargeControlAreaSize)
一个柱面控制区域的下列缺点同样也必须考虑:
若有一个控制区域分裂,更多的数据被迁移.
在顺序输入/输出期间,一个大的控制区域关联到更多的实际存储器(realstorage)和更多的缓冲。
控制区域(CA)的大小牵连到几方面:
1.控制区域(CA)的大小在定义[DEFINE]该VSAM时是没有任何参数可以显式地去指定CASIZE,而它是隐式地由你定义时所要求分配空间的单位及数量而确定的。
一般为取得控制区域(CA)的最大值,简单地规定空间分配以柱面[cylinder]为单位。
2.定义VSAM数据集时,存取方法服务就确定了CASIZE,从而也就确定了CI/CA,即每个控制区域(CA)内包含多少个控制区间(CI)。
它牵连到索引部分CISIZE[即INDEXCISZ],这也就关联到索引部分的两个组成部件;IndexSe[索引集]和SequenceSet[顺序集],从而牵连到INDEXLEVEL,那就需考虑BUFFER之赋值。
有关内容留待VSAM高级课程再论述。
三.相对字节位置(RelativeByteAddress)
相对字节位置(简称RBA)是指VSAM数据集中记录的相对位置,从数据集的起始位置开始计算,VSAM将数据看成连续的字节流,RBA使得记录的地址可以实现设备无关性。
下面我们看个例子,如图4所示:
图4相对字节位置
第一条记录的RBA为零,第二条记录的RBA为第一条记录的长度,也就是10,第三条记录的RBA为第一条记录的长度加上第二条记录的长度,也就是20;其余以此类推。
同理每一CI的RBA计算方法与CI中记录的RBA计算方式相同。
由RBA的定义可知RBA与CI在内存中的实际位置无关,它只是前面各CI之长度和。
四.SpannedRecord
如果记录长度超过一个CI大小的称为SpannedRecord,如下图所示:
SpannedRecord的最大长度是一个CA的长度减去VSAM的控制信息的长度,而且只适用于KSDS和ESDS。
图5SpannedRecord结构
某些数据集当其记录的长度相差很大时,且特长的逻辑记录是个别的,若指定为跨越记录,往往可节省很多资源。
以下举例来记明;例如第一个逻辑记录长度2,000字节,第二个逻辑记录长度10,000字节,第三个逻辑记录长度2,000字节的数据集。
是否指定跨越记录对空间使用量之比较。
没指定是跨越记录,要包含10,000字节之记录,控制区间应10k才行。
R1=2000bytesR2=10000bytesR3=2000bytes
没有SPANNEDRECORDSCISIZE=10240B=10KB
R1(CI1),R2(CI2),R3(CI3),用了30K包含三个记录
指定跨越记录,则CISIZE=4096bytes,R1=2000bytesR2=10000bytesR3=2000bytes
R1(CI1)、R2(CI2+CI3+CI4)、R3(CI5)控制区间之大小为4K,
eachCI(4K),thethreerecordscanbestoredin4KX5=20K(20480bytes)
三个记录共用了五个大小为4K的控制区间,总数是20K。
前者用了30K。
五.数据集(Cluster)
在z/OS系统中,Cluster是一个逻辑概念,是指一个逻辑数据集,由若干个物理数据集组成。
只有考虑VSAM数据集的物理部分的时候,Cluster和DataSet之间才存在区别。
特别是KSDSCluster,KSDScluster包含两个物理数据集,一个数据集中是实际的数据记录,一个数据集是索引部分。
如下图所示:
图6KSDSCluster
而其它的VSAM数据集,包括ESDS,RRDS和LDS数据集,cluster名称和DataSet名称则是指向相同的数据集,每个cluster只包含一个物理数据集,即数据部分。
六.访问控制块(AccessControlBlock)
访问控制块(简称ACB)是应用程序定义VSAM数据集和指定如何处理的控制块。
ACB的作用主要是使用符号名称定义数据集,指定应用程序如何处理数据集和其它的一些选项。
ACB的作用和数据控制块-DataControlBlock(简称DCB)是一样的,但是DCB的处理对象是非VSAM数据集(比如顺序数据集)。
七.访问方法服务(AccessMethodServices)
访问方法服务(简称AMS)是操作系统提供的实用程序,主要用来管理和维护VSAM数据集,比如定义VSAM数据集,为数据集分配磁盘空间,将非VSAM数据集转换成VSAM数据集等,同时AMS也可以对非VSAM数据集操作。
八.集成编目访问方法服务(IntegrateDCatalogAccessMethodServices)
集成编目访问方法服务(简称IDCAMS)是VSAMAMS实用程序的名称,IDCAMS为程序开发人员和系统程序员提供了方便的使用方法,它的主要功能包括定义VSAM数据集,加载数据集,拷贝和备份数据集,打印数据集的内容,改变数据集的某些属性,显示数据集的属性和统计信息,还有删除数据集等,具体的使用方法见4。
七.记录
逻辑的记录:
在一个VSAM数据集逻辑记录被存储是不同於非VSAM数据集的逻辑记录。
一个逻辑记录是一个信息单元用来存储在VSAM数据集。
真实的记录:
一个真实的记录是与设备相关的,当那数据集被定义及通过编目[CATALOG]来管理。
VSAM使用一个控制区间(CI)作为它的信息传输的最小单元。
2.2VSAM数据集类型
目前VSAM支援五种数据集结构:
Key-sequenceddataset(KSDS)关键码顺序数据集。
Entry-sequenceddataset(ESDS)进入码顺序数据集。
Fixed-lengthrelativerecorddataset(RRDS)定长相对记录数据集。
Variable-lengthrelativerecorddataset(VRRDS)变长相对记录数据集。
Lineardataset(LDS)线性数据集。
[前三者早期已有的,后两者是近期新增的]。
VSAM支持五大种不同类型的数据集:
(1)进入顺序数据集-Entry-SequencedDataSet(ESDS),ESDS数据集记录的存放顺序是按照记录进入数据集的先后顺序,记录的读取是通过地址访问,每一条记录的存放与记录的内容无关并且字节地址不能改变。
ESDS也被称为顺序VSAM数据集,所以ESDS数据集比较适合记录顺序处理的应用程序,在大部分应用程序中,ESDS的处理方式和顺序数据集是相似的。
(2)索引顺序数据集-Key-SequencedDataSet(KSDS),KSDS数据集记录的存放按照记录的索引顺序,索引决定记录的存放顺序。
KSDS数据集的记录既支持顺序处理也支持随机处理。
有些应用程序要求数据集有索引字段,索引可以是顾客编号,也可以是员工编号,每个索引可以唯一标识一条记录。
从概念上讲,KSDS数据集有些类似非VSAM数据集的索引顺序数据集,但是执行效率比索引顺序数据集要高。
(3)相对记录数据集-RelativeRecordDataSet(RRDS),在RRDS数据集中,整个存储空间被分成一个个的片(slot),slot可以是等长的也可以是不等长的,每个slot有一个编号,称为相对记录编号(RelativeRecordNumber),简称为RRN。
记录存储在与其RRN值相同的slot中,RRDS的RDF用来记录的随机读取是通过RRN来实现的。
RDF标识相应的slot是否空闲或者被占用。
RRDS有些类似于表格形式的文件。
如下图所示:
图7RRDS的记录存储方式
(4)线性数据集-LinearDataSet(LDS),LDS是一种只包含数据而没有控制信息的数据集,一个LDS数据集被分成为blocks,应用程序按照物理顺序读取这些blocks,每个LDS的block的长度为4096字节。
如下图所示:
图8LDS数据集结构
一.ESDS数据集
图9ESDS结构
ESDS数据集仅由数据部分(DataComponent)组成,其结构如图9所示。
ESDS数据集中存放的记录可以是定长也可以是变长,但是CI中不能预留FreeSpace。
记录的存放方式按照记录写入的先后顺序排列,所以在本质上ESDS是一个顺序数据集。
因为每一条记录的存储位置不能改变,因此增加记录只能加在数据集的最后面,不允许从中间插入;
更新记录时,新记录的长度必须与原记录相同。
此外对于不需要的记录,只能在逻辑上进行删除,无法从磁盘中真正删除,所以程序开发人员
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Virtual Storage Access MethodVSAM详细资料 MethodVSAM 详细资料