【轉】數據庫設計:物理結構設計


數據庫物理設計階段的任務是根據具體計算機系統(DBMS和硬件等)的特點,為給定的數據庫模型確定合理的存儲結構和存取方法。所謂的“合理”主要有兩個含義:一個是要使設計出的物理數據庫占用較少的存儲空間,另一個對數據庫的操作具有盡可能高的速度。

為了設計數據庫的物理結構,設計人員必須充分了解所用DBMS的內部特征;充分了解數據系統的實際應用環境,特別是數據應用處理的頻率和響應時間的要求;充分了解外存儲設備的特性。數據庫的物理結構設計大致包括:確定數據的存取方法、確定數據的存儲結構。

物理結構設計階段實現的是數據庫系統的內模式,它的質量直接決定了整個系統的性能。因此在確定數據庫的存儲結構和存取方法之前,對數據庫系統所支持的事務要進行仔細分析,獲得優化數據庫物理設計的參數。

對於數據庫查詢事務,需要得到如下信息:

l      要查詢的關系。

l      查詢條件(即選擇條件)所涉及的屬性。

l      連接條件所涉及的屬性。

l      查詢的投影屬性。

對於數據更新事務,需要得到如下信息:

l      要更新的關系。

l      每個關系上的更新操作的類型。

l      刪除和修改操作所涉及的屬性。

l      修改操作要更改的屬性值。

上述這些信息是確定關系存取方法的依據。除此之外,還需要知道每個事務在各關系上運行的頻率,某些事務可能具有嚴格的性能要求。例如,某個事務必須在20秒內結束。這種時間約束對於存取方法的選擇有重大的影響。需要了解每個事務的時間約束。

值得注意的是,在進行數據庫物理結構設計時,通常並不知道所有的事務,上述信息可能不完全。所以,以后可能需要修改根據上述信息設計的物理結構,以適應新事務的要求。

1. 確定關系模型的存取方法

確定數據庫的存取方法,就是確定建立哪些存儲路徑以實現快速存取數據庫中的數據。現行的DBMS一般都提供了多種存取方法,如索引法、HASH法等。其中,最常用的是索引法。

數據庫的索引類似書的目錄。在書中,目錄允許用戶不必瀏覽全書就能迅速地找到所需要的位置。在數據庫中,索引也允許應用程序迅速找到表中的數據,而不必掃描整個數據庫。在書中,目錄就是內容和相應頁號的清單。在數據庫中,索引就是表中數據和相應存儲位置的列表。使用索引可以大大減少數據的查詢時間。

但需要注意的是索引雖然能加速查詢的速度,但是為數據庫中的每張表都設置大量的索引並不是一個明智的做法。這是因為增加索引也有其不利的一面:首先,每個索引都將占用一定的存儲空間,如果建立聚簇索引(會改變數據物理存儲位置的一種索引),占用需要的空間就會更大;其次,當對表中的數據進行增加、刪除和修改的時候,索引也要動態地維護,這樣就降低了數據的更新速度。

在創建索引的時候,一般遵循以下的一些經驗性原則:

l      在經常需要搜索的列上建立索引。

l      在主關鍵字上建立索引。

l      在經常用於連接的列上建立索引,即在外鍵上建立索引。

l      在經常需要根據范圍進行搜索的列上創建索引,因為索引已經排序,其指定的范圍是連續的。

l      在經常需要排序的列上建立索引,因為索引已經排序,這樣查詢可以利用索引的排序,加快排序查詢的時間。

l      在經常成為查詢條件的列上建立索引。也就是說,在經常使用在WHERE子句中的列上面建立索引。

同樣,對於某些列不應該創建索引。這時候應該考慮下面的指導原則:

l      對於那些在查詢中很少使用和參考的列不應該創建索引。因為既然這些列很少使用到,有索引並不能提高查詢的速度。相反,由於增加了索引,反而降低了系統的維護速度和增大了空間需求。

l      對於那些只有很少值的列不應該建立索引。例如,人事表中的“性別”列,取值范圍只有兩項:“男”或“女”。若在其上建立索引,則平均起來,每個屬性值對應一半的元組,用索引檢索,並不能明顯加快檢索的速度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM