文章目錄
標籤: 數據庫
DBMS系統概述
數據模型三要素
- 數據結構:描述系統的靜態特性
- 數據本身
- 數據之間的聯繫
- 數據操作:描述系統的動態特性,對數據庫中對象的實例允許執行的操作的集合,包括操作及操作規則
- 完整性約束:完整性規則的集合,規定數據庫狀態及狀態變化所滿足的條件,保證數據庫的正確、有效、相容
DBMS的主要功能
- 持久存儲:支持對非常大量的數據進行存儲,這些數據獨立於使用數據的任何處理程序而存在
- 訪問接口:使得用戶可以通過強有力的查詢語言訪問數據和使用靈活的操作方式修改數據
- 事務管理:支持對數據的併發存取,多個不同的事務同時對數據進行存取並避免同時的訪問可能造成的不良後果
DBMS的運行過程
- 用戶向DBMS發出調用數據庫數據的命令
- DBMS對命令進行語法檢查、語義檢查、存取權限檢查,決定是否要執行該命令
- DBMS執行查詢優化,把命令轉化爲一串串記錄的存取操作序列
- 執行存取操作序列(反覆執行以下各步直到結束)
- DBMS在緩衝區中查找記錄,找到轉10,沒找到轉6
- DBMS查看存儲模式,決定從哪個文件存取哪個物理記錄
- 根據6的結果,向操作系統發出讀取記錄的命令
- 操作系統執行讀取數據的命令
- 操作系統將數據從數據庫存儲區送到系統緩衝區
- DBMS根據用戶命令和數據字典的內容導出用戶所要讀取的數據格式
- DBMS將數據記錄從系統緩衝區傳送到用戶工作區
- DBMS將執行狀態信息返回給用戶
輔助存儲管理
概述
- 輔助存儲負責管理的數據:包括目標數據、元數據、索引和日誌等,這些數據保存在磁盤上。
- DBMS中改變了的數據必須寫在非易失的磁盤上,才能認爲改變的數據已成爲數據庫的一部分。
磁盤結構
磁盤結構
1. 圓盤-盤面-磁道-扇區 2. 磁頭不於盤面接觸,而是貼近地懸浮在盤面上,否則會發生頭損毀,破壞盤片 3. 磁盤控制器的功能 + 定位磁頭到一個特定的半徑位置 + 選擇一個準備讀寫的盤面,從位於該盤面的磁頭下的磁道上選擇一個扇區。並識別何時該扇區正開始移動到磁頭下面。 + 將從該扇區讀取的二進制位傳送到主存儲,或將從主存要寫入的二進制位傳送到該扇區。 + 爲所寫扇區附加校驗和,並在讀取扇區時檢查它。 + 進行壞扇區的重映射磁盤容量
- 磁盤容量=盤面×磁道×扇區×字節×8位
- 一個磁道多少塊=磁道容量/扇區容量
磁盤訪問時間
- 尋道時間:將磁頭組合定位在磁盤塊所在磁道的磁面上所需要的時間
- 旋轉延遲(旋轉等待時間):尋道結束後,讀寫頭到等待被存取的扇區所需要的時間
- 傳輸時間:磁盤控制器讀取或寫數據時,數據所在扇區和扇區間的空隙經過磁頭
磁盤的延遲=尋道時間+旋轉延遲+傳輸時間
磁盤塊存取的優化方法
- 才主存中對塊進行緩衝以減少塊的讀寫次數
- 按柱面組織數據
- 使用多個磁盤
- 磁盤鏡像、
假定一個磁盤的MTTF是100,000小時,修復時間是10小時,則鏡像磁盤系統的MTTF是/(210)=500小時,約爲57000年
- 磁盤臂調度——電梯算法
- 利用非易失性RAM作爲寫緩衝
- 預讀和雙緩衝
- 日誌磁盤
RAID:廉價磁盤冗餘陣列
作用
- 概述:利用大量廉價磁盤進行磁盤組織的技術
- 價格上:大量廉價的磁盤比少量昂貴的大磁盤合算
- 性能上: 使用大量的磁盤可以提高數據的並行存取
- 可靠性上: 冗餘數據可以放在多個磁盤上,因而一個磁盤的故障不會導致數據丟失
- 通過冗餘提高可靠性
- 通過並行提高性能
- 通過在多個磁盤上對數據進行拆分來提高傳輸率
分類與優缺點
RAIDO
- 將多個磁盤並列起來成爲一個大磁盤
- 優點:
- 速度最快
- 塊級拆分且沒有任何冗餘
- 缺點:如果一個磁盤損壞所有的數據都會丟失
- 應用:用於高性能訪問並且數據丟失不十分重要的應用場合
RAID1
- 帶塊級拆分的磁盤鏡像
- 優點:
- 讀性能好(是RAID0性能的兩倍)
- 寫性能是由寫性能最差的磁盤決定(但是對比以後的RAID來說寫的速度還是較快的)
- 可靠性很高
- 缺點:物理磁盤空間是邏輯磁盤空間的兩倍
- 應用:用於類似於數據庫系統中日誌文件存儲的應用場合
RAID2
- 按比特級拆分,具有內存風格的糾錯碼(ECC)
- 未被廣泛應用,目前沒有商業化產品
- 糾錯碼:內存中每個字節都有一個奇偶校驗位與之相連,它記錄這個字節中爲1的比特位的總數是偶數(=0)還是奇數(=1),如果字節中有一位被破壞,則字節的ECC與存儲的ECC就不會相匹配;通過ECC可以檢測到所有的1位錯誤;通過更多的附加位,當數據遭到破壞時,還可以重建數據
RAID3
- 能夠檢測出一個扇區是否被正確的讀出
- 優點
- 效果與RAID2一樣,但是隻有一個磁盤的額外開銷
- 缺點:
- 恢復時間長
- 每個磁盤參與每個IO請求,每秒RAID3支持的IO數較少
RAID4
- 特點:塊級拆分,在一個獨立的磁盤上爲其他N個磁盤上對應的塊保留一個奇偶校驗位
- 優點:
- 讀取一個塊只需要訪問一個磁盤,RAID3需要訪問所有的盤
- 所有的磁盤都可以並行地讀,讀取大量數據的操作有很高的傳輸率
- 缺點:
- 每個存取操作的傳輸率低,可以並行地執行多個讀操作,因此產生較高的總的IO率
假定有4個數據盤和一個冗餘盤
讀數據:RAID3需要5次磁盤讀操作;RAID4與從任何一個cip
寫數據:RAID3需要3次磁盤讀和兩次磁盤寫操作RAID4寫數據需要兩次磁盤讀和兩次磁盤寫操作
RAID5(塊交叉的分佈奇偶校驗)
- 將數據和奇偶效驗位第一分不到所有的N+1磁盤上,對每個塊一個磁盤存儲奇偶校驗位其餘磁盤存儲數據
- 奇偶校驗塊不能和這個塊對應的數據存儲在同一個磁盤上
- 優點:
- 包含了RAID4
- 在相同的成本上,RAID5提供了更好的讀寫性能
RAID6
- 類似RAID5,存儲了額外的冗餘信息
- 不使用奇偶校驗位的方法,使用Reed-Solomon碼,對每4位數據存儲兩位冗餘信息
- 優點:
- 可以容忍兩個磁盤發生故障(高可靠性)
RAID分別使用的技術
- RAID 0級:塊級拆分,無冗餘
- RAID 1級:帶塊級拆分的磁盤鏡像
- RAID 2級:內存風格的糾錯碼組織結構
- RAID 3級:位交叉的奇偶校驗組織結構
- RAID 4級:塊交叉的奇偶校驗組織結構
- RAID 5級:塊交叉的分佈奇偶校驗位的組織結構
- RAID 6級:P+Q冗餘方案
選擇RAID級別應該考慮的因素
- 所需的額外磁盤存儲帶來的開銷
- 在IO操作數量方面的性能需求
- 磁盤故障時的性能
- 數據重建過程中的性能
緩衝區
- 概述:主存中用於存儲磁盤塊的拷貝的部分,由固定數目的緩衝塊構成
- 目的:減少磁盤與主存之間傳輸的快的數目
- 緩衝區管理器:負責緩衝區空間分配的子系統
緩衝區管理工作流程
- 請求處理的流程
- 查看buffer pool是否包含此頁,沒有的則:
- 找到一個pin_count(正在訪問該frame的事務的個數)爲0的frame,pin_count++- 如果dirty爲true,寫入磁盤
- 將相應的頁讀入此frame
- 將frame的地址返回
存儲組織
- 頁的格式:
- 頁是由一系列的記錄構成的,每個記錄爲一個slot
- 記錄的id爲=(page id, slot number)
- 映射表:邏輯地址、物理地址
- 定長記錄
- 每條記錄的長度是固定的,沒有變長字段,一個頁存放的數量和位置也是確定的
- 變長記錄
- 記錄中包含變長字段,記錄的長度是可變的,無法分配定長的slot
- 用slot字典存放記錄的起始位置和記錄的長度,用記錄在slot字典中的位置代替slot的實際起始位置
文件中記錄的組織
堆文件組織
- 概述:一條記錄可以存放在文件中的任何地方,只要有空間存放這條記錄,記錄是無序的,通常一個關係是一個單獨的文件
順序文件組織
- 記錄根據搜索碼的值順序存儲
- 大量插刪改後需要重組:當進行大量的插刪改後,搜索碼順序和物理順序之間的一致性最終將完全喪失,在這種情況下,順序處理將變得效率十分低下,此時文件應該被重組,使得他在物理上順序存放,這種重組的代價是很高,而且必須在系統負載很低的時候執行。需要重組的頻率依賴於新記錄插入的頻率
散列文件組織
- 在每條記錄的某些屬性上計算一個散列函數,散列函數的結果確定了記錄應該放到文件的哪個快中
聚簇文件組織
- 幾個不同關係的記錄存儲在同一文件中(通常用一個文件存儲一個關係的記錄),甚至用不同關係中的相關記錄存儲在相同的塊中,於是一個IO操作可以從多個關係中取到相關記錄