I/O並行:算法
劃分技術:數據庫
1 輪轉法緩存
2 散列劃分:併發
3 範圍劃分:函數
劃分技術比較:優化
數據訪問能夠分類以下:設計
1 掃描整個關係排序
2 按相關性定位元組,點查詢事務
3 定位出給定屬性取值處於指定範圍內的全部元組資源
不一樣劃分技術支持訪問類型的效率是不一樣的:
輪轉法:
適合於但願對每一個查詢順序地讀整個關係的應用。點查詢和範圍查詢的處理都很複雜,由於n張磁盤所有要用於查找
散列劃分:
最適合於基於劃分屬性的點查詢。對於順序掃描整個關係也有用。不能很好地適用於非劃分屬性上的點查詢,
也不能很好地回答範圍查詢。
範圍劃分:
很適合於在劃分屬性上的點查詢和範圍查詢,缺點:若是查詢範圍有許多元組,那麼就會有許多元組必須從少許磁盤中檢索
出來,致使磁盤上的I/O瓶頸
偏斜處理:
當劃分一個關係時(不是輪轉法),元組的分佈有可能發生偏斜,即某些分區中放置了很高百分比的元組,而其餘分區中只有不多的元組
偏斜的表現形式以下:
1 屬性值偏斜:
某些值出如今許多元組的劃分屬性中,在劃分屬性上取相同值的全部元組落入同一分區中,從而致使偏斜
2 劃分偏斜
即便不存在屬性值偏斜,劃分也可能會出現負載不均衡。
平衡的範圍劃分向量:
排序→1/n,這種方法主要缺點是初始排序帶來的額外I/O開銷
經過爲每一個關係的每一個屬性建立和存儲該屬性值的頻率表或直方圖,能夠下降因爲構建平衡的範圍劃分向量而產生的I/O開銷
查詢間並行:
不一樣查詢或事物彼此並行地執行,這種形式的並行能夠提升事務吞吐量,可是單個事務的響應時間不會比事務以隔離方式運行更快
查詢間並行的主要用處是擴展事務處理系統,使它能在每秒內能支持更大數量的事務
當一個處理器訪問或更新數據時,數據庫系統必須保證該處理器在它的緩衝池中擁有該數據的最新版本,稱爲高速緩存一致性問題
多種協議可用於保證高速緩存一致性,一般將高速緩存一致性協議與併發控制協議集成在一塊兒,以減少開銷
用於共享磁盤系統中的一個這樣的協議以下:
1 事務對一個頁面進行任何讀或寫訪問以前,先用相應的共享或排他模式封鎖該頁面,一旦事務獲得鎖以後,從共享磁盤讀取最新版本
2 當事務釋放一個頁面的排他鎖以前,它將該頁面刷新到共享磁盤中,而後釋放封鎖
查詢內並行:
單個查詢在多個處理器和磁盤上並行執行。對於加快運行時間長的查詢的速度,採用查詢內並行
單個查詢的執行能夠有兩種不一樣的並行化方式:
1 操做內並行:並行地執行每一個運算,如排序、選擇、投影和鏈接,來加快一個查詢的處理速度
2 操做間並行: 並行地執行一個查詢表達式中的多個不一樣的運算,來加快一個查詢的處理速度
操做內並行:
並行排序:
範圍劃分排序:
1 採用範圍劃分策略對關係中的元組進行從新分佈,使得處於第i個範圍的全部元組都發送給處理器i,存放在磁盤i中
每一個處理器並行地從它的磁盤上讀取元組,並將這些元組發送到它們的目的處理器
2 每一個處理器對屬於本身的分區進行排序,不與其餘處理器交互
3 合併
並行的外部排序歸併:
1 每一個處理器對本地磁盤中的數據進行排序
2 系統對每一個處理器排好序的歸併段進行合併,獲得最終的排序輸出
a 系統將每一個處理器排好序的分區範圍劃分到各處理器,系統用排序順序發送元組使得各個處理器接收的都是排好序的元組流
b 每一個處理器進行歸併
c 合併
並行鏈接:
基於劃分的鏈接:
只有在鏈接是等值鏈接並且在鏈接屬性上用一樣的劃分函數對關係r和s進行劃分的狀況下,基於劃分的鏈接技術才能正確工做
兩種劃分方法:
1 基於鏈接屬性進行範圍劃分
2 基於鏈接屬性進行散列劃分
分片-複製鏈接:
非對稱的分片-複製鏈接:
1 系統對一個關係進行劃分
2 系統將另外一個關係複製到全部處理器上
3 鏈接
4 合併
分片-複製鏈接:
系統將關係r劃分爲m個分區,將關係s劃分爲n個分區,處理器數量是m*n
當兩個關係的規模基本相同時,分片-複製鏈接的代價一般比基於劃分的鏈接要高,由於分片-複製鏈接必須至少要複製其中的一個關係
基於劃分的並行散列鏈接
用相同的散列函數處理關係,映射處處理器上,處理器再用散列鏈接算法鏈接,合併
並行嵌套循環鏈接
其餘關係運算:
1 選擇
2 去重
3 投影
4彙集
運算的並行計算代價
1 啓動代價
2 偏斜
3 對資源的競爭
4 組裝代價
操做間並行:
流水線並行:
獨立並行
查詢優化:
並行系統設計
多核處理器的並行性