官术网_书友最值得收藏!

4.5 物理結(jié)構(gòu)設(shè)計

數(shù)據(jù)庫的物理結(jié)構(gòu)設(shè)計是利用數(shù)據(jù)庫管理系統(tǒng)提供的方法、技術(shù),對已經(jīng)確定的數(shù)據(jù)庫邏輯結(jié)構(gòu),以較優(yōu)的存儲結(jié)構(gòu)、數(shù)據(jù)存取路徑、合理的數(shù)據(jù)庫存儲位置及存儲分配,設(shè)計出一個高效的、可實現(xiàn)的物理數(shù)據(jù)庫結(jié)構(gòu)。

由于不同的數(shù)據(jù)庫管理系統(tǒng)提供的硬件環(huán)境和存儲結(jié)構(gòu)、存取方法不同,提供給數(shù)據(jù)庫設(shè)計者的系統(tǒng)參數(shù)以及變化范圍也不同,因此,物理結(jié)構(gòu)設(shè)計一般沒有一個通用的準則,它只能提供一個技術(shù)和方法供參考。

數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計通常分為兩步。

1)確定數(shù)據(jù)庫的物理結(jié)構(gòu),在關(guān)系數(shù)據(jù)庫中主要指存取方法和存儲結(jié)構(gòu)。

2)對物理結(jié)構(gòu)進行評價,評價的重點是時間和空間效率。

如果評價結(jié)果滿足原設(shè)計要求,則可進入到物理結(jié)構(gòu)實施階段,否則,就需要重新設(shè)計或修改物理結(jié)構(gòu),有時甚至要返回邏輯結(jié)構(gòu)設(shè)計階段修改數(shù)據(jù)模型。

4.5.1 物理結(jié)構(gòu)設(shè)計的內(nèi)容和方法

物理結(jié)構(gòu)設(shè)計得好,可以使各業(yè)務(wù)的響應(yīng)時間短、存儲空間利用率高、事務(wù)吞吐率大。因此,在設(shè)計數(shù)據(jù)庫時首先要對經(jīng)常用到的查詢和對數(shù)據(jù)進行更新的事務(wù)進行詳細的分析,獲得物理結(jié)構(gòu)設(shè)計所需要的各種參數(shù)。其次,要充分了解所用DBMS的內(nèi)部特征,特別是系統(tǒng)提供的存取方法和存儲結(jié)構(gòu)。對于數(shù)據(jù)庫查詢事務(wù),需要得到如下信息。

1)查詢所涉及的關(guān)系。

2)連接條件所涉及的屬性。

3)查詢條件所涉及的屬性。

4)查詢的列表中涉及的屬性。

對于數(shù)據(jù)更新事務(wù),需要得到如下信息。

1)更新所涉及的關(guān)系。

2)更新操作所涉及的屬性。

3)每個關(guān)系上的更新操作條件所涉及的屬性。

此外,還需要了解每個查詢或事務(wù)在各關(guān)系上運行的頻率和性能要求。假設(shè)某個查詢必須在1s內(nèi)完成,則數(shù)據(jù)的存儲方式和存取方式就非常重要。

應(yīng)該注意的是,數(shù)據(jù)庫上運行的操作和事務(wù)是不斷變化的,因此,需要根據(jù)這些操作的變化不斷地調(diào)整數(shù)據(jù)庫的物理結(jié)構(gòu),以獲得最佳的數(shù)據(jù)庫性能。

通常關(guān)系數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計的內(nèi)容主要如下。

(1)確定數(shù)據(jù)的存取方法(建立存取路徑)

存取方法是快速存取數(shù)據(jù)庫中數(shù)據(jù)的技術(shù)。數(shù)據(jù)庫管理系統(tǒng)一般都提供多種存取方法。常用的存取方法有索引方法、聚簇方法和HASH方法。具體采取哪種存取方法由系統(tǒng)根據(jù)數(shù)據(jù)庫的存儲方式?jīng)Q定,一般用戶不能干預(yù)。

所謂索引存取方法實際上就是根據(jù)應(yīng)用要求確定對關(guān)系的哪些屬性列建立索引,對哪些屬性列建立組合索引,對哪些索引要設(shè)計為唯一索引等。

建立索引的一般原則如下。

如果一個(或一組)屬性經(jīng)常作為查詢條件,則考慮在這個(或這組)屬性上建立索引(或組合索引)。

如果一個屬性經(jīng)常作為聚集函數(shù)的參數(shù),則考慮在這個屬性上建立索引。

如果一個(或一組)屬性經(jīng)常作為表的連接條件,則考慮在這個(或這組)屬性上建立索引。

如果某個屬性經(jīng)常作為分組的依據(jù)列,則考慮在這個屬性上建立索引。

一個表可以建立多個非聚簇索引,但只能建立一個聚簇索引。

索引一般可以提高數(shù)據(jù)查詢性能,但會降低數(shù)據(jù)修改性能。因為在進行數(shù)據(jù)修改時,系統(tǒng)要同時對索引進行維護,使索引與數(shù)據(jù)保持一致。維護索引要占用較多的時間。存儲索引也要占用空間信息。因此,在決定是否建立索引時,要權(quán)衡數(shù)據(jù)庫的操作,如果查詢多,并且對查詢性能要求較高,可以考慮多建一些索引:如果數(shù)據(jù)更改多,并且對更改的效率要求比較高,可以考慮少建索引。

(2)確定數(shù)據(jù)的物理存儲結(jié)構(gòu)

物理結(jié)構(gòu)設(shè)計中,一個重要的考慮是確定數(shù)據(jù)的存儲位置和存儲結(jié)構(gòu),包括確定關(guān)系、索引、聚簇、日志、備份等的存儲安排和存儲結(jié)構(gòu),確定系統(tǒng)配置。確定數(shù)據(jù)存儲位置和存儲結(jié)構(gòu)的因素包括存取時間、存儲空間利用率和維護代價,這3個方面常常是相互矛盾的,必須進行權(quán)衡,選擇一個折中方案。

常用的存儲方法如下。

● 順序存儲:這種存儲方式的平均查找次數(shù)是表中記錄數(shù)的一半。

● 散列存儲:這種存儲方式的平均查找次數(shù)由散列算法決定。

● 聚簇存儲:為了提高某個屬性的查詢速度,可以把這個或這些屬性上具有相同值的元組集中存儲在連續(xù)的物理塊上,大大提高對聚簇碼的查詢效率。

用戶可以通過建立索引的方法改變數(shù)據(jù)的存儲方式。但其他情況下,數(shù)據(jù)是采用順序存儲還是散列存儲,或是采用其他的存儲方式是由數(shù)據(jù)庫管理系統(tǒng)根據(jù)具體情況決定的,一般它都會為數(shù)據(jù)選擇一種最適合的存儲方式,而用戶并不能對其進行干涉。

4.5.2 評價物理結(jié)構(gòu)

數(shù)據(jù)庫物理結(jié)構(gòu)設(shè)計過程中需要對時間效率、空間效率、維護代價和各種用戶要求進行權(quán)衡,其結(jié)果可能產(chǎn)生多種方案。數(shù)據(jù)庫設(shè)計人員必須對這些方案進行細致的評價,從中選擇出一個較優(yōu)的合理的物理結(jié)構(gòu)。

評價物理結(jié)構(gòu)的方法完全依賴于所選用的DBMS,主要考慮操作開銷,即為使用戶獲得及時、準確的數(shù)據(jù)所需要的開銷和計算機資源的開銷。具體可以分為以下步驟。

1)查詢和響應(yīng)時間。響應(yīng)時間是從查詢開始到查詢結(jié)束之間所經(jīng)歷的時間。一個好的應(yīng)用程序設(shè)計可以減少CPU的時間和I/O時間。

2)更新事務(wù)的開銷,主要是修改索引、重寫數(shù)據(jù)塊或文件以及寫校驗方面的開銷。

3)生成報告的開銷,主要包括索引、重組、排序和結(jié)果顯示的開銷。

4)主存儲空間的開銷,包括程序和數(shù)據(jù)所占的空間。對數(shù)據(jù)庫設(shè)計者來說,一般可以對緩沖區(qū)進行適當?shù)目刂啤?/p>

5)輔助存儲空間的開銷,輔助存儲空間分為數(shù)據(jù)塊和索引塊,設(shè)計者可以控制索引塊的大小。

實際上,數(shù)據(jù)庫設(shè)計者只能對I/O和輔助存儲空間進行有效的控制,其他方面都是有限的控制或根本不能控制。

主站蜘蛛池模板: 勐海县| 九寨沟县| 会昌县| 中方县| 辽中县| 保康县| 金阳县| 凭祥市| 巧家县| 西城区| 成安县| 包头市| 青田县| 荥阳市| 库尔勒市| 平昌县| 清镇市| 邵阳县| 芜湖县| 石泉县| 瑞昌市| 东乌| 黄龙县| 苍山县| 鄂伦春自治旗| 西安市| 武平县| 塔城市| 竹溪县| 玛纳斯县| 嘉兴市| 普格县| 加查县| 锡林浩特市| 托克逊县| 蕲春县| 蓬溪县| 大埔区| 丰台区| 玉屏| 甘泉县|