12.4.2 虚拟存取方法文件 / VSAM文件

  • 虚拟存储存取文件 / VSAM 文件
    文件只有 控制区间控制区域逻辑存储单位
    与外存储器中柱面、磁道等具体存储单位没有必然的联系,用户在存取文件中的记录时,不需要考虑这个记录的当前位置是否在内存,也不需要考虑何时执行对外存进行读写命令。

  • VSAM文件结构
    由3部分组成:索引集顺序集数据集
    在这里插入图片描述
    文件的记录均放在 数据集 中,数据集中的一个结点称为 控制区间 。控制区间是一个 IO 操作的基本单位,由一组连续的存储单元组成。
    控制区间的大小可随文件不同而不同,但同一文件上控制区间的大小相同
    每个控制区间含有一个或多个按关键字递增有序排列的记录
    顺序集和索引集一起构成一棵 B+,为文件的索引部分
    顺序集中存放每个控制区间的索引项。每个控制区间的索引项由两部分信息组成,即 该控制区间中的最大关键字指向控制区间的指针
    若干相邻控制区间的索引项 形成 顺序集 中的一个结点,结点之间用 指针相链接,而每个结点又在其上一层的结点中建有索引,且逐层向上建立索引。
    上图中所有的索引项都由 最大关键字指针 两部分信息组成,这些高层的索引项形成 B+树的非终端结点
    因此,VSAM文件既可以在顺序集中进行顺序存取,又可以从最高层的索引(B+树的根结点)出发进行按关键字存取
    控制区域 :顺序集中一个结点连同其对应的所有控制区间形成一个整体,叫作控制区域

  • 每个控制区间可视为一个逻辑磁道,每个控制区域可视为一个逻辑柱面

  • VSAM文件的记录可以是不定长的,控制区间中除了存放记录本身以外,还有每个记录的控制信息(如记录的长度)和整个区间的控制信息(如区间中存有的记录数)。
    可以是像下图这样的:
    在这里插入图片描述

  • VSAM文件解决插入的办法:在初建文件时留有空间,当控制区间和控制区域已满不能再进行插入记录时,可以进行控制区间或控制区域的分裂(插入后也要保证关键字自小至大有序)
    1、每个控制区间内不填满记录,在最末一个记录和控制信息之间留有空隙
    2、在每个控制区域中设置一些完全空的控制区间,并在顺序集的索引中指明这些空区间

  • VSAM文件的删除
    将同一控制区间中较删除记录关键字大的记录向前移动,把空间留给以后插入的新记录。
    若整个控制区间变空,则需修改顺序集中相应的索引项。

  • VSAM文件所占存储空间较大,一般只能保持约 75% 的存储空间利用率
    优点:可以动态分配和释放存储空间,不需要对文件进行重组,并能较快地对插入的记录进行查找,查找性能稳定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值