資料庫原理(十 三) 物理結構設計

2021-10-06 14:45:46 字數 2181 閱讀 6679

資料庫子啊物理裝置上的儲存結構與訪問方法稱為資料庫的物理結構,它依賴於選定的資料庫管理系統。為乙個給定的邏輯資料模型選取乙個最適合應用要求的物理結構的過程,就是資料庫的物理設計

資料庫的物理設計通常分為兩步:

確定資料庫的物理結構,在關聯式資料庫中主要指訪問方法和儲存結構

對物理結構進行評價,評價的重點是時間和空間效率

不同的資料庫產品所提供的物理環境、訪問方法和儲存結構有很大差別,能供設計人員使用的設計變數、引數範圍也很不相同,因此沒有通用的物理設計方法可遵循,只能給出一般的設計內容和原則。

對於資料庫查詢事務,需要得到如下資訊:

對於資料庫更新事務,需要得到如下資訊:

除此之外,還需要知道每個事務在各關係上執行的頻率和效能要求,例如:

事務t必須10s內結束
這對於訪問方法的選擇具有重大影響,而上述這些資訊是確定關係的訪問方法的依據。

訪問方法是快速訪問資料庫中資料的技術。資料庫管理系統一般提供多種訪問方法,常用的訪問方法為索引方法和聚簇方法,其中b+樹索引和hash索引是資料庫中經典的訪問方法,使用最普遍。

b+樹索引訪問方法的選擇

如果乙個或者(或者一組)屬性經常在查詢條件**現,則考慮在這個(或這組)屬性上建立索引(或組合索引)

如果乙個屬性經常作為最大值和最小值等聚集函式的引數,則考慮在這個(或這組)屬性上建立索引

如果乙個(或一組)屬性經常在連線操作的連線條件**現,則考慮在這個(或這組)屬性上建立索引

hash索引訪問方法的選擇

如果乙個關係的屬性主要出現在等值連線條件中或主要出現在等值比較選擇條件中,而且滿足下列兩個條件之一,則此關係可以選擇hash訪問方法

乙個關係的大小可預知,而且不變

關係的大小動態改變,但資料庫管理系統提供了動態hash訪問方法

ps:關係上定義的索引數並不是越多越好,系統為維護索引要付出代價,查詢索引也要付出代價

聚簇訪問方法的選擇

為了提高某個屬性(或屬性組)的查詢速度,把這個或這些屬性上具有相同值得元組集中存放在連續得物理塊中稱為聚簇,該屬性(或屬性組稱為聚簇碼)。聚簇功能可以大大提高按聚簇碼進行查詢的效率,乙個資料庫可以建立多個聚簇,一關係只能加入乙個聚簇。選擇聚簇訪問方法,即確定需要建立多少個聚簇,每個聚簇中包括那些關係。

首先設計候選聚簇,一般來說:

對經常在一起進行連線操作的關係可以建立聚簇

如果乙個關係的一組屬性經常出現在相等比較條件中,則該單個關係可建立聚簇

如果乙個關係的乙個(或一組)屬性上的值重複率很高,則此單個關係可建立聚簇

即對應每個聚簇碼值的平均元組數不能太少,太少則聚簇的效果不明顯。

然後檢查候選聚簇中的關係,取消其中不必要的關係:

從聚簇中刪除經常進行全表掃瞄的關係

從聚簇中刪除更新操作遠多於連線操作的關係

不同的聚簇中可能包含相同的關係,乙個關係可以在某乙個聚簇中,但不能同時加入多個聚簇

ps:要從這多個聚簇方案(包括不建立聚簇)中選擇乙個較優的,即在這個聚簇上執行各種事務的總代價最小,聚簇只能提高某些應用的效能,而且建立於維護聚簇的開銷相當的大

確定資料庫物理結構主要指確定資料的存放位置和儲存結構,包括確定關係、索引、聚簇、日誌、備份等的儲存安排和儲存結構,確定系統配置等。確定資料的存放位置和儲存結構要綜合考慮訪問時間、儲存空間利用率和維護代價三方面的因素,這三個方面常常是相互矛盾的,因此需要進行權衡,選擇乙個折中的方案。

確定資料的存放位置

為了提高系統效能,應該根據應用情況將資料的易變部分與穩定部分、經常訪問部分和訪問頻度較低部分分開存放

確定系統配置

關聯式資料庫管理系統產品一般都提供了一些系統配置變數和儲存分配引數,供設計人員和資料管理員對資料庫進行物理優化

系統配置變數有:

資料庫物理設計過程中需要對時間效率空間效率維護代價各種使用者要求進行權衡,其結果可以產生多種方案。資料庫設計人員必須對這些方案進行細緻的評價,從中選擇乙個較優的方案作為資料的物理結構

王珊,薩師煊.資料庫系統概論(第五版)[m].北京:高等教育出版社,2014:234-238.

資料庫設計(5) 物理結構設計

物理結構的設計,也即是設計資料在磁碟上的儲存,需要考慮 安全 容災 效能 io競爭少 伺服器資源利用率高。通常當前資料庫只使用乙份 online 的資料來源,至於分布式儲存已經上公升到伺服器架構的設計,這裡不作討論。以下僅簡單描述非分布式儲存的情況,主要從磁碟 檔案 表資料三方面來說。一 磁碟 ra...

資料庫結構設計

1.3概念設計的任務 1.2概念設計的依據 需求分析的文件,需求說明書,功能模型 資料流圖或idef0圖 資訊模型 er圖 和資料庫概念說明書是資料庫邏輯設計的依據 1.2 資料庫概念設計過程 1.3 資料建模方法 er建模方法 idef1x建模方法標識er模型中的聯絡,依次轉換與每個聯絡相關聯的實...

redis資料庫結構設計

之前遊戲開發服務端都是用純c 來寫,現在很多寫遊戲伺服器越來越傾向指令碼語言,因為用c 來寫一些邏輯的確是痛苦之極,當然如果追求效率的還是用c c 實現更好。最近時間自己通過研究了解雲風寫的skynet框架學習了lua,研究skynet其實是想把這框架用到公司現在遊戲專案裡替換掉現在用的乙個純c 框...