- 數據庫系統原理及應用教程(第4版)
- 劉瑞新等
- 3492字
- 2020-05-28 17:16:20
3.5 數據庫物理結構的設計
數據庫的物理設計是對于給定的邏輯數據模型,選取一個最適合應用環境的物理結構。數據庫的物理結構指的是數據庫在物理設備上的存儲結構與存取方法,它依賴于給定的計算機系統。
數據庫的物理設計可以分為兩步進行:首先確定數據的物理結構,即確定數據庫的存取方法和存儲結構;然后對物理結構進行評價。對物理結構評價的重點是時間和效率。如果評價結果滿足原設計要求,則可以進行物理實施;否則應該重新設計或修改物理結構,有時甚至要返回邏輯設計階段修改數據模型。
3.5.1 數據庫物理結構設計的內容和方法
由于不同的數據庫產品所提供的物理環境、存取方法和存儲結構各不相同,供設計人員使用的設計變量、參數范圍也各不相同,所以數據庫的物理結構設計沒有通用的設計方法可遵循,僅有一般的設計內容和設計原則供數據庫設計者參考。
數據庫設計人員都希望自己設計的物理數據庫結構能滿足事務在數據庫上運行時響應時間短、存儲空間利用率高和事務吞吐率大的要求。為此,設計人員應該對要運行的事務進行詳細的分析,獲得選擇物理數據庫設計所需要的參數,并且應當全面了解給定的DBMS的功能、DBMS提供的物理環境和工具,尤其是存儲結構和存取方法。
數據庫設計者在確定數據存取方法時,必須清楚3種相關信息。
1)數據庫查詢事務的信息,它包括查詢所需要的關系、查詢條件所涉及的屬性、連接條件所涉及的屬性、查詢的投影屬性等信息。
2)數據庫更新事務的信息,它包括更新操作所需要的關系、每個關系上的更新操作所涉及的屬性、修改操作要改變的屬性等信息。
3)每個事務在各關系上運行的頻率和性能要求。
例如,某個事務必須在5s內結束,這對于存取方法的選擇有直接影響。這些事務信息會不斷地發生變化,因此數據庫的物理結構要能夠作適當的調整,以滿足事務變化的需要。
關系數據庫物理設計的內容主要指選擇存取方法和存儲結構,包括確定關系、索引、聚簇、日志、備份等的存儲安排和存儲結構,確定系統配置等。
3.5.2 關系模式存取方法的選擇
由于數據庫是為多用戶共享的系統,它需要提供多條存取路徑才能滿足多用戶共享數據的要求。數據庫物理設計的任務之一就是確定建立哪些存取路徑和選擇哪些數據存取方法。關系數據庫常用的存取方法有索引方法、聚簇方法和HASH方法等。
1.索引存取方法的選擇
選擇索引存取方法實際上就是根據應用要求確定對關系的哪些屬性列建立索引,哪些屬性列建立組合索引,哪些索引建立唯一索引等。選擇索引方法的基本原則如下。
1)如果一個屬性經常在查詢條件中出現,則考慮在這個屬性上建立索引;如果一組屬性經常在查詢條件中出現,則考慮在這組屬性上建立組合索引。
2)如果一個屬性經常作為最大值和最小值等聚集函數的參數,則考慮在這個屬性上建立索引。
3)如果一個屬性經常在連接操作的連接條件中出現,則考慮在這個屬性上建立索引;同理,如果一組屬性經常在連接操作的連接條件中出現,則考慮在這組屬性上建立索引。
4)關系上定義的索引數要適當,并不是越多越好,因為系統為維護索引要付出代價,查找索引也要付出代價。例如,更新頻率很高的關系上定義的索引,數量就不能太多。因為更新一個關系時,必須對這個關系上有關的索引做相應的修改。
2.聚簇存取方法的選擇
為了提高某個屬性或屬性組的查詢速度,把這個屬性或屬性組上具有相同值的元組集中存放在連續的物理塊上的處理稱為聚簇,這個屬性或屬性組稱為聚簇碼。
(1)建立聚簇的必要性
聚簇功能可以大大提高按聚簇碼進行查詢的效率。例如要查詢計算機系的所有學生名單,假設計算機系有200名學生,在極端情況下,這200名學生所對應的數據元組分布在200個不同的物理塊上。盡管對學生關系已按所在系建有索引,由索引會很快找到計算機系學生的元組標識,避免了全表掃描。然而再由元組標識去訪問數據塊時就要存取200個物理塊,執行200次I/O操作。如果將同一系的學生元組集中存放,則每讀一個物理塊就可得到多個滿足查詢條件的元組,從而可以顯著地減少訪問磁盤的次數。聚簇功能不但適用于單個關系,而且適用于經常進行連接操作的多個關系。即把多個連接關系的元組按連接屬性值聚集存放,聚集中的連接屬性稱為聚簇碼。這就相當于把多個關系按“預連接”的形式存放,從而大大提高連接操作的效率。
(2)建立聚簇的基本原則
一個數據庫可以建立多個聚簇,但一個關系只能加入一個聚簇。選擇聚簇存取方法就是確定需要建立多少個聚簇,確定每個聚簇中包括哪些關系。聚簇設計時可分兩步進行:先根據規則確定候選聚簇,再從候選聚簇中去除不必要的關系。
設計候選聚簇的原則如下。
1)對經常在一起進行連接操作的關系可以建立聚簇。
2)如果一個關系的一組屬性經常出現在相等、比較條件中,則該單個關系可建立聚簇。
3)如果一個關系的一個(或一組)屬性上的值重復率很高,則此單個關系可建立聚簇。也就是說對應每個聚簇碼值的平均元組不能太少,太少了,聚簇的效果不明顯。
4)如果關系的主要應用是通過聚簇碼進行訪問或連接,而其他屬性訪問關系的操作很少時,可以使用聚簇。尤其當SQL語句中含有與聚簇有關的ORDER BY,GROUP BY,U-NION,DISTINCT等子句或短語時,使用聚簇特別有利,可以省去對結果集的排序操作。反之,當關系較少利用聚簇碼操作時,最好不要使用聚簇。
檢查候選聚簇,取消其中不必要關系的方法如下。
1)從聚簇中刪除經常進行全表掃描的關系。
2)從聚簇中刪除更新操作遠多于連接操作的關系。
3)不同的聚簇中可能包含相同的關系,一個關系可以在某一個聚簇中,但不能同時加入多個聚簇。要從這多個聚簇方案(包括不建立聚簇)中選擇一個較優的,其標準是在這個聚簇上運行各種事務的總代價最小。
(3)建立聚簇應注意的問題
建立聚簇時,應注意以下3個問題。
1)聚簇雖然提高了某些應用的性能,但是建立與維護聚簇的開銷是相當大的。
2)對已有的關系建立聚簇,將導致關系中的元組移動其物理存儲位置,這樣會使關系上原有的索引無效,要想使用原索引就必須重建原有索引。
3)當一個元組的聚簇碼值改變時,該元組的存儲位置也要做相應移動,所以聚簇碼值應當相對穩定,以減少修改聚簇碼值所引起的維護開銷。
3.5.3 確定數據庫的存儲結構
確定數據的存放位置和存儲結構要綜合考慮存取時間、存儲空間利用率和維護代價3方面的因素。這3方面常常相互矛盾,需要進行權衡,選擇一個折中方案。
1.確定數據的存放位置
為了提高系統性能,應根據應用情況將數據的易變部分與穩定部分、經常存取部分和存取頻率較低部分分開存放。有多個磁盤的計算機,可以采用下面幾種存取位置的分配方案。
1)將表和索引放在不同的磁盤上,這樣在查詢時,由于兩個磁盤驅動器并行工作,可以提高物理I/O讀寫的效率。
2)將比較大的表分別放在兩個磁盤上,以加快存取速度,這在多用戶環境下特別有效。
3)將日志文件、備份文件與數據庫對象(表,索引等)放在不同的磁盤上,以改進系統的性能。
4)對于經常存取或存取時間要求高的對象(如表、索引)應放在高速存儲器(如硬盤)上,對于存取頻率小或存取時間要求低的對象(如數據庫的數據備份和日志文件備份等只在故障恢復時才使用),如果數據量很大,可以存放在低速存儲設備上。
由于各個系統所能提供的對數據進行物理安排的手段、方法差異很大,因此設計人員應仔細了解給定的DMBS提供的方法和參數,針對具體應用環境的要求,對數據進行適當的物理安排。
2.確定系統配置
DBMS產品一般都提供了一些系統配置變量和存儲分配參數供設計人員和DBA對數據庫進行物理優化。在初始情況下,系統都為這些變量賦予了合理的默認值。但是這些默認值不一定適合每一種應用環境。在進行數據庫的物理結構設計時,還需要重新對這些變量賦值,以改善系統的性能。
系統配置變量很多。例如:同時使用數據庫的用戶數、同時打開的數據庫對象數、內存分配參數、緩沖區分配參數(使用的緩沖區長度、個數)、存儲分配參數、物理塊的大小、物理塊裝填因子、時間片大小、數據庫的大小和鎖的數目等,這些參數值影響存取時間和存儲空間的分配。物理結構設計時需要根據應用環境確定這些參數值,以使系統性能最佳。
物理結構設計時對系統配置變量的調整只是初步的,在系統運行時還要根據實際運行情況做進一步的參數調整,以改進系統性能。
3.評價物理結構
物理結構設計過程中需要對時間效率、空間效率、維護代價和各種用戶要求進行權衡,其結果可能會產生多種設計方案。數據庫設計人員必須對這些方案進行詳細的評價,從中選擇一個較優的方案作為數據庫的物理結構。評價物理結構的方法完全依賴于所選用的DBMS,主要是從定量估算各種方案的存儲空間、存取時間和維護代價入手,對估算結果進行權衡和比較,選擇出一個較優的、合理的物理結構。如果該結構不符合用戶需求,則需要修改設計。