計算機四級考試輔導:第六章 儲存技術與資料庫物理設計
6.1 檔案組織
6.1.1 資料庫的物理結構
1、 資料庫中的應用資料是以檔案形式儲存在外存上的,檔案在邏輯上被組織成記錄的序列,即每個db檔案可看作是邏輯記錄的集合;
2、 乙個檔案在磁碟上占有一定的物理儲存空間,檔案中的每個邏輯記錄被對映儲存到某個特定的磁碟塊上,乙個檔案在物理上可以看作是由存放檔案記錄的一系列磁碟塊組成,稱為物理檔案;
3、 檔案的邏輯記錄與磁碟間的對映關係是由作業系統或dbms來管理的,當需要對乙個檔案的邏輯記錄進行操作時,先要根據這種對映關係找到該邏輯記錄所在的磁碟塊,然後再進行操作。
4、 從資料庫物理結構角度需要解決如下問題:
(1) 檔案的組織;
(2) 檔案的結構;
(3) 檔案的訪問;
(4) 索引技術;
6.1.2 檔案組織
1、 資料庫與檔案的對應關係
(1) 在外存中,資料庫以檔案形式組織,檔案由邏輯記錄組成,記錄由多個域組成;
(2) 乙個關聯式資料庫包括一張或多張關係表,關係表與檔案的對應關係有如下方式:
(a) 每張關係表單獨用乙個檔案來儲存,由dbms通過os的檔案管理功能來管理;
(b) 現代中大型dbms是由os直接分配一塊大的磁碟空間,dbms將該磁碟空間作為資料庫磁碟檔案直接管理,db的所有關係表都儲存在該檔案中;
(1) 關係表在邏輯上由一系列元組組成,元組由多個屬性組成,每個元組可以用磁碟檔案中的乙個邏輯記錄來儲存,記錄包括多個域,對應元組的多個屬性;
2、檔案記錄格式:
(1) 資料庫檔案通常採用兩種邏輯記錄格式:定長記錄格式和變長記錄格式;
6.2 檔案結構與訪問
6.2.1 堆檔案
1、 堆檔案也稱無序檔案,記錄隨機在儲存在檔案物理空間是,新插入的記錄儲存在檔案的末尾;
2、 堆檔案常常用作儲存那些將來使用,但目前不清楚如何使用的記錄,為了實現檔案記錄的有效訪問,堆檔案經常與附加的訪問路徑一起使用;
3、 查詢操行平均需要搜尋(b+1)/2個磁碟塊,效率比較低;
4、 插入操作十分簡單,先讀檔案頭,找到最末磁碟位址,將最末磁碟塊讀入記憶體,將需插入的新記錄寫入磁碟塊的末端,最後將修改過的磁碟塊寫回磁碟;
5、 刪除比較複雜,可以先找到被刪除記錄所在的磁碟塊,讀入記憶體後在記憶體緩衝區刪除記錄,最後再寫回磁碟;也可以在每個記錄的磁碟空間增加乙個刪除標誌位,當需要刪除記錄時,將標示位置1;
6.2.2 順序檔案
1、 順序檔案按照檔案記錄在查詢碼上的取值的大小順序排列各個記錄;
2、 順序檔案的每個記錄中有乙個指標字段,根據查詢碼大小用指標將各個記錄按序連線起來;
3、 檔案建立時,應盡量使記錄的物理順序與查詢碼的順序一致,以減少訪問磁碟塊的次數;
4、 根據查詢條件對順序檔案進行查詢時,如查詢條件定義在查詢碼上,則使用二分法查詢技術快速找到記錄,如條件不在查詢碼上,則必須從頭到尾依次掃瞄磁碟塊,與堆檔案一致,所以順序檔案的訪問效率也不高;
5、 順序檔案插入工作包括定位和插入:
(1) 定位:在指標鏈中找到插入的位置,即插入記錄在哪個記錄的前面;
(2) 插入:如有自由空間,則在該位置插入新記錄,如沒有自由空間,則只能插入溢位塊中,重新調整記錄指標鏈關係,保證記錄順序;
6.2.3 聚集檔案
1、 聚集檔案是一種具有多種記錄型別檔案,儲存了來自多個關係表的資料,每個關係表對應檔案中的一種記錄型別;
2、 當資料庫中資料量效大時,對資料庫查詢需要多次訪問磁碟檔案,嚴重影響效能指標,為了降低多表操作時的磁碟訪問次數,提高多表查詢速度,可採用聚集檔案;
3、 聚集檔案將不同關係表中有關聯關係的記錄儲存在同一磁碟塊內,從而減少多表查詢時磁碟塊的訪問次數,提高處理速度;
6.2.4 索引檔案
是一種利用索引技術技術快速檔案訪問的檔案組織和訪問方法;
6.2.4 雜湊檔案
是一種利用雜湊函式支援快速檔案訪問的檔案組織和訪問方法;
6.3 索引技術
6.3.1 基本概念
1、 索引技術:是一種快速檔案訪問技術,它將乙個檔案的每個記錄在某個或某些域(屬性)上的取值與該記錄的實體地址直接聯絡起來,提供了一種根據記錄域的取值快速訪問檔案記錄的機制;它的關鍵是建立取值域到記錄的實體地址劉的對映關係,這種對映關係叫索引;
2、 索引技術分類:
(1) 有序索引技術:利用索引檔案實現記錄域(查詢碼)取值到記錄實體地址間的對映關係,索引檔案由索引記錄組成,每個記錄中記載乙個索引項,索引項記錄了某個特定的查詢碼值和具有該值的資料檔案記錄的實體地址;
(2) 雜湊技術:利用乙個雜湊函式實現記錄域取值到記錄實體地址間的直接對映關係;
(3) 有序索引:有序索引作為基於索引檔案的索引技術,需要考慮兩個問題:(1)如何組織索引檔案中的索引記錄;(2)如何從索引檔案出發,訪問資料檔案中的資料記錄;
(a) 當需要採用有序索引機制快速訪問資料檔案時,首先要為該資料檔案建立乙個索引檔案,它是索引記錄和索引項的集合;
(b) 索引檔案建立的方法:首先選定某些記錄域作為查詢碼,然後建立資料記錄在查詢碼上的取值與實體地址間的對映關係,組成索引項。所有索引項作為索引記錄儲存在索引檔案中,索引檔案根據某個特定的查詢碼值的順序組織為順序檔案;
(c) 乙個資料檔案可以有多個查詢碼和索引檔案;
6.3.2 有序索引的分類及特點
1、 聚集索引與非聚集索引
(1) 對資料檔案和它的乙個特定的索引檔案,如果資料檔案中資料記錄的排列順序與索引檔案中索引項的排列順序相一致,則該索引檔案稱為聚集索引,否則稱為非聚集索引;
(2) 在乙個資料檔案上除了建立乙個聚集索引外,還可建立多個非聚集索引;
2、 稠密索引和稀疏索引
如果資料檔案中的每個查詢碼都在索引檔案中都對應乙個索引記錄,稱為稠密索引,如果只一部分對應,則稱為稀疏索引;
3、 主索引和輔索引
在資料檔案包含主碼的屬性集上建立索引稱為主索引,在非主碼屬性上建立的索引稱為輔索引;
4、單層索引和多層索引
(1) 單層索引(線性索引):索引項根據鍵值在索引檔案中順序排列,組織成一維線性結構,每個索引項直接指向資料檔案中的資料記錄;
(2) 當資料檔案很大時,即使採用稀疏索引,建成的索引檔案也很大,導致效率低下,為解決該問題,可對索引檔案中的索引項本身再建立一級稀疏索引,組成2層索引結構;進一步地,可建立多層樹型索引結構來快速定位;
6.4 雜湊技術
6.4.1 雜湊檔案
1、 雜湊是一種快速查詢技術,它利用定義在檔案記錄上的查詢碼,通過計算乙個雜湊函式,以雜湊函式值作為記錄的實體地址,實現對檔案記錄直接快速訪問。
2、 首先指定檔案記錄的乙個域作為查詢碼(雜湊域),然後定義乙個查詢碼上的函式(雜湊函式),函式的輸入為查詢碼值,輸出為實體地址;
3、 一般使用桶作為基本的儲存單位,乙個桶可存放多個檔案記錄,實體地址可以是記錄所在的桶號,雜湊函式的輸出可以是桶號;
6.4.2 雜湊函式
1、 雜湊方法依賴於好的雜湊函式,它應該盡可能均勻地將查詢碼分布到各個桶中,具體要滿足如下兩個條件:
(1) 位址的分布是均勻的;
(2) 位址的分布是隨機的;
6.4.3 桶溢位
1、 產生桶溢位的兩個原因:
(1) 檔案初始設計時,為檔案記錄預留的儲存空間不足;
(2) 雜湊函式的均勻分布性不好;
2、 設計雜湊函式時,應根據檔案大小決定物理空間,一般應有20%餘量,再設計合適的桶數目和桶大小,盡可能留有一些空閒桶,降低桶溢位的可能性;
3、 桶溢位的現象是難免的,需要dbs採用相應的桶溢位處理機制;
4、 雜湊方法的缺點:為了避免桶溢位。必須選一合適的雜湊函式,但這比較複雜,而且不象索引檔案那樣可以據資料記錄變化動態調整。
6.5 資料字典
1、 資料字典(系統目錄)中儲存了資料庫物件的各類描述資訊和dbms所需的控制資訊,全稱資料庫元資料;
2、 資料庫物件的各類描述資訊:包括外模式、模式、內模式以及它們之間的對映的描述;
3、 dbms所需的控制資訊:包括查詢優化、安全性檢查、使用者許可權驗證等;
4、 資料字典主要包括:
(1) 關係模式資訊;
(2) 與檢視描述有關的資訊;
(3) 關係的儲存結構和訪問方法資訊;
(4) 完整性約束資訊;
(5) 安全性有關資訊;
(6) 資料庫執行統計資訊;
6.6 資料庫物理設計
6.6.1 設計步驟和內容
1、 資料庫物理結構設計:在具體的硬體環境、os、dbms約束下,根據資料庫邏輯設計結果,設計合適的資料庫物理結構。目標是儲存空間占用少、訪問效率高和維護代價低;
2、 一旦選定了硬體平台、os和dbms,資料庫的資料儲存和訪問方式等可用的物理模式也就隨之確定了;
3、 資料庫物理設計主要包括以下步驟:
(1) 資料庫邏輯模式
2023年計算機四級資料庫技術複習筆記(9)
計算機四級考試資料庫複習筆記 資料庫的實施 執行和維護 10.1資料庫的實施 10.1.1 定義資料庫結構 1 為了實現資料庫的邏輯結構設計和物理結構設計結果,必須建立實際的資料庫,即在確定了資料庫的邏輯結構和物理結構後,開發人員使用具體的dbms提供的資料定義語言 ddl 來嚴格描述資料庫結構。1...
2023年計算機四級考試資料庫技術複習筆記6
2011年計算機四級考試資料庫技術複習筆記 第六章 儲存技術與資料庫物理設計 6.1 檔案組織 6.1.1 資料庫的物理結構 1 資料庫中的應用資料是以檔案形式儲存在外存上的,檔案在邏輯上被組織成記錄的序列,即每個db檔案可看作是邏輯記錄的集合 2 乙個檔案在磁碟上占有一定的物理儲存空間,檔案中的每...
2023年計算機等級考試四級資料庫技術(10)
13.1 儲存過程 13.1.1 儲存過程基本概念 1 在關聯式資料庫中,sql語言是應用程式和資料庫管理之間的主要程式設計介面 2 使用sql語言編寫 時,可用兩種方法儲存和執行 1 在客戶端儲存 並建立向資料庫管理系統傳送sql命令,並處理返回結果的應用程式 2 將這些傳送的sql語句儲存在資料...