1.ISAM文件
索引顺序存取方法ISAM 为Indexed Sequential Access Methed的缩写,它是一种专为磁盘存取设计的文件组织方式。由于磁盘是以盘组,柱面和磁道三级地址存取的设备,则可对磁盘上的数据文件建立盘组、柱面和磁道R三级索引。文件的记录在同一盘组上存放时,应先集中放在一个柱面上,然后再顺序存放在相邻的柱面上,对同一柱面,则应按盘面的次序顺序存放。例如图1为存放在一个磁盘组上的ISAM文件,每个柱面建立一个磁道索引,每个磁道索引项由两部分组成:基本索引项和溢出索引项,如图2所示,每一部分都包括关键字和指针两项,前者表示该磁道中最末一个记录的关键字(在此为最大关键字),后者指示该磁道中第一个记录的位置,柱面索引的每一个索引项也由关键字和指针两部分组成,前者表示该柱面中最末一个记录的关键字(最大关键字),后者指示该柱面上的磁道索引位置。柱面索引存放在某个柱面上,若柱面索引较大,占多个磁道时,则可建立柱面索引的索引一主索引。
在ISAM文件上检索记录时,先从主索引出发找到相应的柱面索引,再从柱面索引找到记录所在柱面的磁道索引,最后从磁道索引找到记录所在磁道的第一个记录的位置,由此出发在该磁道上进行顺序查找直至找到为止;反之,若找遍该磁道而不存在此记录,则表明该文件中无此记录。例如,查找关键字为21的记录时的查找路径如图1中的粗实线所示。
![](https://i-blog.csdnimg.cn/blog_migrate/c5d45bc483326756ed05a76857dd4c7a.png)
从图1中可看到,每个柱面上还开辟有一个溢出区;并且,磁道索引项中有溢出索引项,这是为插入记录所设置的。由于ISAM文件中记录是按关键字顺序存放的,则在插入记录时需移动记录,并将同一磁道上最末一个记录移至溢出区,同时修改磁道索引项