12.4.1 索引顺序存取方法文件 / ISAM文件
文件特点
主文件
按主关键字
有序,因此可以对一组记录
建立一个 索引项
(非稠密索引)索引顺序存取方法 / ISAM:
专门为磁盘存取设计的文件组织方法
主文件
按柱面
集中存放,同时建立三级索引
:主索引
、柱面索引
和磁道索引
文件的记录在同一盘组
存放时,应先集中放在一个柱面上,然后再顺序放在相邻的柱面上;对于同一柱面,应按照盘面的顺序来存放。
如下图是存放在一个磁盘组上的ISAM文件:
每个柱面
建立一个磁道索引
,磁道索引
中的每个磁道索引项
由两部分组成:基本索引项
和溢出索引项
。
每个索引项
都包括关键字
和指针
两项。
关键字
表示该磁道中最末一个记录的关键字(在此为最大关键字
)。
指针
指示该柱面上的磁道索引位置。
如下图所示:
柱面索引
也是存放在某个柱面
上,若柱面索引较大,占多个磁道时,可以建立柱面索引的索引
,也就是主索引
。在ISAM文件上检索记录时,
先从主索引
出发,找到相应的柱面索引
,
再从柱面索引
找到记录所在柱面的磁道索引
,
最后从磁道索引
找到记录所在磁道的第一个记录的位置
,
由此出发在该磁道上进行顺序查找
直到找到为止。每个柱面上还开辟有一个
溢出区
,并且磁道索引项中设有溢出索引项
,这是为了插入记录
所设置的。
ISAM文件中记录是按关键字顺序
存放的,则在插入记录
时需要移动记录
,并将同一磁道上最后一个记录移至溢出区,还要修改磁道索引项
。
每个柱面的基本区
是顺序存储结构
;溢出区
是链表结构
,同一磁道溢出的记录由指针
相链。
该磁道索引的溢出索引项
中的关键字
指示该磁道溢出的记录的最大关键字
,指针指示在溢出区中的第一个记录。举例:
如下图a为插入前某一柱面上的状态
如下图b为插入 R65时,将第二道中关键字大于65的记录顺次后移,使 R90 溢出至溢出区的情况
如下图c为插入 R65 之后的状态,此时2道的基本索引项的关键字改为80,且溢出索引项的关键字改为90,其指针指向第4道第一个记录即 R90
如下图d是相继插入 R95 和 R83 后的状态,R95 插入在第3道的第一个记录的位置而使 R145 溢出。而由于 80 < 83 < 90,则 R83 被直接插入到溢出区,作为第二道在溢出区的第一个记录,并将它的指针指向 R90 的位置,同时修改第二道索引的溢出索引项的指针指向 R83。
溢出区的三种设置方法
1、集中存放
:整个文件设一个大的单一的溢出区
2、分散存放
:每个柱面设一个溢出区(上图12.8中就是使用此法)
3、集中与分散相结合
:溢出时记录先移至每个柱面各自的溢出区,待满之后再使用公共溢出区ISAM文件的删除操作
只需找到待删除的记录
,再起存储位置上作删除标记
即可,不需要移动记录或改变指针,但在经过多次的增删后,文件的结构可能变得很不合理。可能会有大量的记录进入溢出区,而基本区中又浪费很多空间,需要周期地整理 ISAM 文件,填满基本区而空出溢出区。ISAM文件中柱面索引的位置
通常磁道索引
放在每个柱面的第一道上
;
柱面索引不应该放在文件的第一个柱面上;每一次检索都需要先查找柱面索引,则磁头需在各柱面间来回移动,希望磁头移动距离的平均值
最小。
因此柱面索引
应放在数据文件的中间位置的柱面上
。
12.4.1 索引顺序存取方法文件 / ISAM文件相关推荐
- 数据结构之ISAM文件和VSAM文件
1.ISAM文件 索引顺序存取方法ISAM 为Indexed Sequential Access Methed的缩写,它是一种专为磁盘存取设计的文件组织方式.由于磁盘是以盘组,柱面和磁道三级地址存取的 ...
- 12.4.2 虚拟存取方法文件 / VSAM文件
虚拟存储存取文件 / VSAM 文件 文件只有 控制区间 和 控制区域 等逻辑存储单位: 与外存储器中柱面.磁道等具体存储单位没有必然的联系,用户在存取文件中的记录时,不需要考虑这个记录的当前位置是否 ...
- 2022/12/17 mysql 索引基本原理解读
1什么是索引 索引是帮助MySQL 高效获取数据的数据结构,通过使用索引可以在查询的过程中,使用优化隐藏器,提高系统的性能. https://www.cs.usfca.edu/~galles/visu ...
- 查找——索引顺序表和倒排表
查找 8.3 索引顺序表和倒排表 8.3.1 索引顺序表 (1)完全索引 (2)二级索引 结论 8.3.2 倒排表 (1)链式倒排索引表 (2)单元倒排索引表 特点 8.3 索引顺序表和倒排表 当数据 ...
- 有序表的索引顺序结构查找次数分析
有序表的索引顺序结构查找次数分析 @(算法学习) 为了提高查找效率,对65025个元素的有序顺序表建立索引顺序结构,在最好情况下查找到表中已有元素,平均需要执行(B)次关键字比较. A. 10 B. ...
- 索引顺序查找(分块查找)
索引顺序查找又叫分块查找,它是介于顺序查找和折半查找之间的一种查找方法.折半查找虽然具有很好的性能,但其前提条件是线性表顺序存储而且按照关键字排序,这一前提条件在结点数很大且表元素动态变化时难以满足. ...
- MATLAB中怎样初始化(创建)二维、三维、四维以及多维矩阵,各维度的索引顺序是怎样的?
目录 1 在MATLAB中初始化二维矩阵 2 在MATLAB中初始化三维矩阵 3 在MATLAB中初始化四维矩阵 4 在MATLAB中初始化N维矩阵 1 在MATLAB中初始化二维矩阵 在MATLAB ...
- python修改csv文件字段顺序_python 操作csv文件写入顺序不对
我是初学者不太懂 为什么在终端显示是正确的顺序到了csv 文件中就是另一回事了呢 还有就是 csv 文件怎么可以运行之后继续填写 而不是清空文件呢? 图片: 代碼: import urllib.req ...
- VMware Workstation Pro 12 无法使用超过4G大小的ghost镜像文件进行系统还原的 傻 快 处理方案
VMware虚拟机安装 超过4GB Ghost 64位win7 的方法-亲测,需要支持请留言 VMware Workstation Pro 12 无法使用超过4G大小的ghost镜像文件进行系统还原的 ...
最新文章
- C++ 预编译的时候使用defined 的含义
- 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...
- c语言位运算符读音,C语言六种位运算符
- nstruts2.0发布前奏---浅谈struts和依赖注入在项目中的应用
- IOS静态库生成及测试
- 全面提升AR感知能力的新款iPad Pro或将延期发布
- 【codevs1519】 过路费
- php 写入.csv文件注意点
- Android开发之在不同API上遇见的坑
- 64位win8系统加64位sql server 2008,性能提高了好多
- matlab炮灰模型,非诚勿扰的数学分析
- 西北大学计算机课表,西北大学课表
- 大司、小司、外包公司
- ROS入门——解决RLException: Unable to launch [xxx-2]
- Android OpenGL ES从入门到进阶(六)—— OpenGL ES人像美白与磨皮初探
- Windows 使用技巧 -- 自定义桌面图标显示
- 联想服务器linux系统raid驱动,ThinkSystem服务器RAID 530/930系列阵列卡驱动及安装RHEL7.3要点说明...
- 解决阿里云OSS使用URL无法访问图片
- 免费影视综艺动漫的手机APP(支持双端)
- AAA配置与管理——2
热门文章
- Android 消息队列
- python-藏头诗与成语接龙(爬虫)
- flash as3使用,播放声音和加载外部声音文件
- http请求头中的host是什么意思
- C语言 —— 嵌套语句的使用
- 2022抖音温暖中国年 集年味分7亿玩法攻略
- C++经典算法题-兔子增长题
- oracle出现101,oracle常见问题(101-200)
- 股票F10关键字过滤工具:13年年报10转10股票一览,截止2014年3月10日 共67只
- 梦幻仙缘剧情java_梦幻仙缘ios下载-梦幻仙缘苹果版1.0 ios变态版-东坡下载