程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> 數據庫-物理設計

數據庫-物理設計

編輯:DB2教程

數據庫-物理設計


數據庫的物理設計

數據庫在物理設備上的存儲結構與存取方法稱為數據庫的物理結構,它依賴於選定的數據庫管理系統
為一個給定的邏輯數據模型選取一個最適合應用環境的物理結構的過程,就是數據庫的物理設計

數據庫物理設計的步驟
確定數據庫的物理結構,在關系數據庫中主要指存取方法和存儲結構
對物理結構進行評價,評價的重點是時間和空間效率
如果評價結果滿足原設計要求,則可進入到物理實施階段,否則,就需要重新設計或修改物理結構,有時甚至要返回邏輯設計階段修改數據模型

數據庫物理設計的內容和方法

設計物理數據庫結構的准備工作
對要運行的事務進行詳細分析,獲得選擇物理數據庫設計所需參數
充分了解所用RDBMS的內部特征,特別是系統提供的存取方法和存儲結構
選擇物理數據庫設計所需參數
數據庫查詢事務
查詢的關系
查詢條件所涉及的屬性
連接條件所涉及的屬性
查詢的投影屬性

選擇物理數據庫設計所需參數(續)
數據更新事務
被更新的關系
每個關系上的更新操作條件所涉及的屬性
修改操作要改變的屬性值
每個事務在各關系上運行的頻率和性能要求

關系數據庫物理設計的內容
為關系模式選擇存取方法(建立存取路徑)
設計關系、索引等數據庫文件的物理存儲結構

關系模式存取方法選擇

數據庫系統是多用戶共享的系統,對同一個關系要建立多條存取路徑才能滿足多用戶的多種應用要求
物理設計的任務之一就是要確定選擇哪些存取方法,即建立哪些存取路徑
DBMS常用存取方法
索引方法
目前主要是B+樹索引方法
經典存取方法,使用最普遍
聚簇(Cluster)方法
HASH方法

選擇索引存取方法

根據應用要求確定
對哪些屬性列建立索引
對哪些屬性列建立組合索引
對哪些索引要設計為唯一索引

選擇索引存取方法的一般規則
如果一個(或一組)屬性經常在查詢條件中出現,則考慮在這個(或這組)屬性上建立索引(或組合索引)
如果一個屬性經常作為最大值和最小值等聚集函數的參數,則考慮在這個屬性上建立索引
如果一個(或一組)屬性經常在連接操作的連接條件中出現,則考慮在這個(或這組)屬性上建立索引
關系上定義的索引數過多會帶來較多的額外開銷
 維護索引的開銷
 查找索引的開銷

聚簇

為了提高某個屬性(或屬性組)的查詢速度,把這個或這些屬性(稱為聚簇碼)上具有相同值的元組集中存放在連續的物理塊稱為聚簇

聚簇的用途

大大提高按聚簇碼進行查詢的效率
例:假設學生關系按所在系建有索引,現在要查詢信息系的所有學生名單。
信息系的500名學生分布在500個不同的物理塊上時,至少要執行500次I/O操作
如果將同一系的學生元組集中存放,則每讀一個物理塊可得到多個滿足查詢條件的元組,從而顯著地減少了訪問磁盤的次數

節省存儲空間
聚簇以後,聚簇碼相同的元組集中在一起了,因而聚簇碼值不必在每個元組中重復存儲,只要在一組中存一次就行了

聚簇的局限性

聚簇只能提高某些特定應用的性能 建立與維護聚簇的開銷相當大
對已有關系建立聚簇,將導致關系中元組移動其物理存儲位置,並使此關系上原有的索引無效,必須重建
當一個元組的聚簇碼改變時,該元組的存儲位置也要做相應移動

聚簇的適用范圍
1. 既適用於單個關系獨立聚簇,也適用於多個關系組合聚簇
例:假設用戶經常要按系別查詢學生成績單,這一查詢涉及學生關系和選修關系的連接操作,即需要按學號連接這兩個關系,為提高連接操作的效率,可以把具有相同學號值的學生元組和選修元組在物理上聚簇在一起。這就相當於把多個關系按“預連接”的形式存放,從而大大提高連接操作的效率。

當通過聚簇碼進行訪問或連接是該關系的主要應用,與聚簇碼無關的其他訪問很少或者是次要的時,可以使用聚簇。
尤其當SQL語句中包含有與聚簇碼有關的ORDER BY,GROUP BY,UNION,DISTINCT等子句或短語時,使用聚簇特別有利,可以省去對結果集的排序操作
設計候選聚簇
對經常在一起進行連接操作的關系可以建立聚簇
如果一個關系的一組屬性經常出現在相等比較條件中,則該單個關系可建立聚簇
如果一個關系的一個(或一組)屬性上的值重復率很高,則此單個關系可建立聚簇。即對應每個聚簇碼值的平均元組數不太少。太少了,聚簇的效果不明顯

優化聚簇設計
從聚簇中刪除經常進行全表掃描的關系;
從聚簇中刪除更新操作遠多於連接操作的關系;
不同的聚簇中可能包含相同的關系,一個關系可以在某一個聚簇中,但不能同時加入多個聚簇
從這多個聚簇方案(包括不建立聚簇)中選擇一個較優的,即在這個聚簇上運行各種事務的總代價最小

選擇HASH存取方法的規則

當一個關系滿足下列兩個條件時,可以選擇HASH存取方法
該關系的屬性主要出現在等值連接條件中或主要出現在相等比較選擇條件中
該關系的大小可預知,而且不變;

該關系的大小動態改變,但所選用的DBMS提供了動態HASH存取方法

確定數據庫的存儲結構

確定數據庫物理結構的內容
1. 確定數據的存放位置和存儲結構
關系
索引
聚簇
日志
備份
2. 確定系統配置
確定數據存放位置和存儲結構的因素
存取時間
存儲空間利用率
維護代價
這三個方面常常是相互矛盾的
例:消除一切冗余數據雖能夠節約存儲空間和減少維護代價,但往往會導致檢索代價的增加
必須進行權衡,選擇一個折中方案

確定數據的存放位置

基本原則
根據應用情況將
易變部分與穩定部分分開存放
存取頻率較高部分與存取頻率較低部分,分開存放

例:
數據庫數據備份、日志文件備份等由於只在故障恢復時才使用,而且數據量很大,可以考慮存放在磁帶上
如果計算機有多個磁盤或磁盤陣列 ,可以考慮將表和索引分別放在不同的磁盤上,在查詢時,由於磁盤驅動器並行工作,可以提高物理I/O讀寫的效率 

例(續):
可以將比較大的表分別放在兩個磁盤上,以加快存取速度,這在多用戶環境下特別有效
可以將日志文件與數據庫對象(表、索引等)放在不同的磁盤以改進系統的性能

DBMS產品一般都提供了一些存儲分配參數
同時使用數據庫的用戶數
同時打開的數據庫對象數
內存分配參數
使用的緩沖區長度、個數
存儲分配參數
…….

評價物理結構

評價內容
對數據庫物理設計過程中產生的多種方案進行細致的評價,從中選擇一個較優的方案作為數據庫的物理結構
評價方法(完全依賴於所選用的DBMS )
定量估算各種方案
存儲空間
存取時間
維護代價
對估算結果進行權衡、比較,選擇出一個較優的合理的物理結構
如果該結構不符合用戶需求,則需要修改設計

數據庫結構建立好後,就可以向數據庫中裝載數據了。組織數據入庫是數據庫實施階段最主要的工作。

數據裝載方法
人工方法
計算機輔助數據入庫

數據庫的試運行

強調兩點:
分期分批組織數據入庫
重新設計物理結構甚至邏輯結構,會導致數據重新入庫。
由於數據入庫工作量實在太大,費時、費力,所以應分期分批地組織數據入庫
先輸入小批量數據供調試用
待試運行基本合格後再大批量輸入數據
逐步增加數據量,逐步完成運行評價

數據庫的轉儲和恢復
在數據庫試運行階段,系統還不穩定,硬、軟件故障隨時都可能發生
系統的操作人員對新系統還不熟悉,誤操作也不可避免
因此必須做好數據庫的轉儲和恢復工作,盡量減少對數據庫的破壞。

數據庫的運行與維護

數據庫試運行合格後,數據庫即可投入正式運行。
數據庫投入運行標志著開發任務的基本完成和維護工作的開始
對數據庫設計進行評價、調整、修改等維護工作是一個長期的任務,也是設計工作的繼續和提高。
應用環境在不斷變化
數據庫運行過程中物理存儲會不斷變化

在數據庫運行階段,對數據庫經常性的維護工作主要是由DBA完成的,包括:
數據庫的轉儲和恢復
數據庫的安全性、完整性控制
數據庫性能的監督、分析和改進
數據庫的重組織和重構造

數據庫的重組織和重構造
重組織的形式
全部重組織
部分重組織
只對頻繁增、刪的表進行重組織
重組織的目標
提高系統性能

重組織的工作
按原設計要求
重新安排存儲位置
回收垃圾
減少指針鏈
數據庫的重組織不會改變原設計的數據邏輯結構和物理結構

數據庫重構造
根據新環境調整數據庫的模式和內模式
增加新的數據項
改變數據項的類型
改變數據庫的容量
增加或刪除索引
修改完整性約束條件

數據庫各級模式的形成
數據庫的各級模式是在設計過程中逐步形成的
需求分析階段綜合各個用戶的應用需求(現實世界的需求)
概念設計階段形成獨立於機器特點、獨立於各個DBMS產品的概念模式(信息世界模型),用E-R圖來描述

在邏輯設計階段將E-R圖轉換成具體的數據庫產品支持的數據模型如關系模型,形成數據庫邏輯模式。然後根據用戶處理的要求,安全性的考慮,在基本表的基礎上再建立必要的視圖(VIEW)形成數據的外模式
在物理設計階段根據DBMS特點和處理的需要,進行物理存儲安排,設計索引,形成數據庫內模式

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved