ISAM文件的檢索
在ISAM文件上檢索記錄時從主索引出發找到相應的柱面索引;從柱面索引找到記錄所在柱面的磁道索引;從磁道索引找到記錄所在磁道的起始地址由此出發在該磁道上進行順序查找直到找到為止若找遍該磁道均不存在此記錄則表明該文件中無此記錄;若被查找的記錄在溢出區則可從磁道索引項的溢出索引項中得到溢出鏈表的頭指針然後對該表進行順序查找
【例】要在下圖中查找記錄R 先查主索引即讀入CoTo;因為<則查找柱面索引的C T l (不妨設每個磁道可存放個索引項)即讀人C T l ;因為<<所以進一步把C T 入內存;查磁道索引因為<所以C T 即為R 所存放的磁道讀人C T 後即可查得R
為了提高檢索效率通常可讓主索引常駐內存並將柱面索引放在數據文件所占空間居中位置的柱面上這樣從柱面索引查找到磁道索引時磁頭移動距離的平均值最小
ISAM文件的插入操作
當插人新記錄時首先找到它應插入的磁道若該磁道不滿則將新記錄插入該磁道的適當位置上即可;若該磁道已滿則新記錄或者插在該磁道上或者直接插入到該磁道的溢出鏈表上插入後可能要修改磁道索引中的基本索引項和溢出索引項
【例】依次將記錄R R R 插入到上圖所示的文件後第二個柱面的磁道索引及該柱面中主文件W的變化狀況如下圖所示
當插入R 時應將它插在C T l 因為<所以R 應插在該磁道的第一個記錄的位置上而該磁道上原記錄依次後移一個位置於是最後一個記錄R 被移人溢出區由於該磁道上最大關鍵字由變成故它的溢出鏈表也由空變為含有一個記錄R 的非空表因此將CT對應的磁道索引項中基本索引項的最大關鍵字由改為;將溢出索引項的最大關鍵字置為且令溢出鏈表的頭指針指向R 的位置;類似地R和B被先後插入到第號柱面的第號磁道C T 上插入R 時R 被移到溢出區;插入R 時R 被移到溢出區即該磁道溢出鏈表上有兩個記錄雖然物理位置上R 在R 之前但作為按關鍵字有序的鏈表B 是鏈表上的第一個記錄R 是第二個記錄因此C T 對應的溢出索引項中最大關鍵字為而溢出鏈表頭指針指向R的位置;C T 移出R 和移出R 後變為該磁道上最大關鍵字所以C T 對應的基本索引項中最大關鍵字由變為
ISAM文件中刪除記錄的操作
ISAM文件中刪除記錄的操作比插入簡單得多只要找到待刪除的記錄在其存儲位置上作刪除標記即可而不需要移動記錄或改變指針在經過多次的增刪後文件的結構可能變得很不合理此時大量的記錄進入溢出區而基本區中又浪費很多的空間
因此通常需要周期性地整理ISAM文件把記錄讀入內存重新排列復制成一個新的ISAM文件填滿基本區而空出溢出區
From:http://tw.wingwit.com/Article/program/sjjg/201311/23614.html