存儲與索引
計算機存儲體系
存儲器層次:
斷電是否易失:
易失存儲器:緩存,主存
非易失存儲器:二級、三級存儲器
RAID技術
Redundant Arrays of Independent Disks 冗餘獨立磁盤陣列
一種磁盤組織技術
原理: 通過冗餘提高可靠性,通過並行提高性能
優點: 可靠、高效、易於管理和操作
方案:
方案 | 特點 | 優劣 | 應用 |
---|---|---|---|
RAID 0 | 數據被分割 多個磁盤並行讀寫 |
無冗餘數據 、傳輸高效 一個磁盤失效則影響整個數據 |
高實時性,低數據可用性 |
RAID 1 | 數據鏡像實現數據冗餘 | 讀寫性能高、一個磁盤失效可自動交換到鏡像之上 需要數據拷貝,數據冗餘 |
更新操作多的應用(日誌數據存儲) |
RAID 5 | 交叉的將數據和奇偶校驗存於所有的磁盤 | 所有磁盤參與讀操作,寫代價高 |
數據量大但寫操作少的應用(視屏數據存儲) |
選擇RAID時候的考慮因素:
- 所需的額外磁盤存儲空間
- 同時支持的I/O 操作數量
- 磁盤故障時的數據可靠性
- 數據重建過程所需的時間
索引
- 順序索引 (Ordered index)
- 樹狀索引 (B+ tree)
- 哈希(Hashing)
索引結構評價指標
- 支持的查詢類型(精確,範圍查找)
- 時間複雜度(查詢、插入、刪除)
- 空間複雜度
順序索引
索引項: 由由key 和指向具有該key 的一個或個記錄指針構成
記錄指針: 磁盤塊標識 :磁盤塊標識+ 塊內偏移
順序索引分類:
- 聚集索引:一個表一個聚集索引(1:1),記錄文件的物理順序與索引項順序一致
- 非聚集索引:記錄文件的物理順序與索引順序不同
- 稠密索引:數據文件中的 每個key都在索引中對應一個索引項 ,通過 記錄指針 指向真正的記錄數據
- 不訪問數據文件就可以判斷某條記錄是否存在
- 建立二級索引時需要
- 稀疏索引:某些key 對應一個索引項 ,如一個塊對應一個索引項
- 稀疏索引的塊指針比記錄指針所佔空間小,因此每個索引項佔用空間更小,可以在內存中存儲更多的索引項
- 更便於插入操作
- 稠密索引:數據文件中的 每個key都在索引中對應一個索引項 ,通過 記錄指針 指向真正的記錄數據
特點:
優點
- 簡單
- 索引也是順序文件
- 便於掃描
缺點
- 插入代價高
- 可能失去順序或平衡
樹狀索引
動態,可保持平衡
索引的創建
哈希
- 哈希函數
- 哈希衝突
- Hash表中的insert和delete
動態哈希:
允許hash 函數動態改變,以適應數據庫增大或減小的需要,提高空間利用率(可擴充哈希)
hash文件有利於精確查詢或創建臨時文件
順序索引或樹形索引文件便於範圍查詢
create index INDEX_NAME on rel(attr)
create unique index INDEX_NAME on rel(attr)
drop index INDEX_NAME