1. 程式人生 > >資料庫系統概念(機械工業出版社,第六版)複習——第十一章:查詢處理和查詢優化

資料庫系統概念(機械工業出版社,第六版)複習——第十一章:查詢處理和查詢優化

第十一章 查詢處理和查詢優化

查詢優化

在所有等效執行計劃中選擇具有最小查詢執行代價的計劃

查詢代價的度量

只用傳輸磁碟塊數以及搜尋磁碟次數來度量查詢計算計劃的代價

tT – 傳輸一個塊的時間

tS – 磁碟平均訪問時間(磁碟搜尋時間+旋轉延遲)

傳輸 b 個塊以及執行 s 次磁碟搜尋的操作代價:
        b * tT + s * tS

可以通過使用額外的緩衝空間來減少磁碟 I/O 操作。

選擇運算

利用檔案掃描和索引的選擇:

演算法A1(線性搜尋):

時間代價= br次磁碟塊傳輸 + 1次磁碟搜尋= br*tT + tS。

br代表檔案中的磁碟塊數

對作用在碼屬性上的選擇操作來說,系統在找到所需記錄以後可以立即停止

演算法A1(線性搜尋,碼等值比較):

時間代價 = (br /2) 次磁碟塊傳輸 + 1 次磁碟搜尋

最壞情況下,需要br個塊傳輸

演算法A2(B+樹主索引,碼屬性等值比較):

Cost = (hi + 1) * (tT + tS)

上述公式:索引查詢穿越樹的高度,再加一次I/O取記錄,每個這樣的I/O操作需要一次搜尋和一次塊傳輸。hi為B+樹高度

演算法A3(B+樹主索引,非碼屬性等值比較):

Cost = hi * (tT + tS) + tS + tT * b

上述公式:樹的每層一次搜尋,第一個塊的搜尋,b是包含具有指定搜尋碼的塊數,假定這些塊是順序儲存的葉子塊,並且不需要額外搜尋

演算法A4(B+樹輔助索引,碼屬性等值比較):

Cost = (hi + 1) * (tT + tS)

上述公式:和A2相似。索引查詢穿越書的高度,再加一次I/O取記錄,每個這樣的I/O操作需要一次搜尋和一次塊傳輸

演算法A4(B+樹輔助索引,非碼屬性等值比較):

Cost = (hi + n) * (tT + tS)

上述公式:n是所取記錄數,索引查詢的代價和A3相似,但是每條記錄可能在不同的塊上,這需要每條記錄一次搜尋。如果n比較大,查詢代價非常大

涉及比較的選擇:

演算法A5(B+樹主索引,比較):

Cost = hi * (tT + tS) + tS + tT * b

上述公式:和A3非碼相似。樹的每層一次搜尋,第一個塊的搜尋,b是包含具有指定搜尋碼的塊數,假定這些塊是順序儲存的葉子塊,並且不需要額外搜尋

演算法A6(B+樹輔助索引,比較):

Cost = (hi + n) * (tT + tS)

上述公式:和A4非碼相似。n是所取記錄數,但是每條記錄可能在不同的塊上,這需要每條記錄一次搜尋。如果n比較大,查詢代價非常大

連線運算

巢狀迴圈連線、塊巢狀迴圈連線、索引巢狀迴圈連線、歸併連線、雜湊連線

表示式計算

計算一個完整表示式樹的兩種方法:

物化:輸入一個關係或者已完成的計算,產生一個表示式的結果,在磁碟中物化它,重複該過程。

流水線:一個正在執行的操作的部分結果傳送到流水線的下一個操作,使得兩操作可同時進行。

查詢優化

查詢優化就是從多個可能的策略中,找出最有效的查詢執行計劃的一種處理過程。

優化一方面可以在關係代數級別發生,另一方面是為處理查詢選擇一個詳細的策略,比如執行演算法、選擇索引等。

等價規則

等價性:如果兩個關係代數表示式在所有有效資料庫例項中都會產生相同的元組集,則稱它們是等價的。(元組的順序是無關緊要的)