第九章 關係查詢處理和查詢優化

2021-10-05 12:42:43 字數 1858 閱讀 5512

(這裡只寫了對於資料庫做題有幫助的部分b+樹內容)

b+樹上的葉子結點儲存關鍵字以及相應記錄的位址,葉子結點以上各層作為索引使用。在資料庫中,b+樹葉子結點的上層都是索引,為了方便查詢,不涉及記錄的位址,每個葉子結點存放相應的記錄,也就是元組。並且元組按鍵值有序排放,即按照有b+樹索引的屬性值有序排放

b+樹上的查詢類似於二叉排序樹的查詢,跟二分法是一致的。

通過一下例子,說明一下在b+樹索引下的查詢。

【例】

select

*from student where sage >

20;

假定sage上有b+樹索引。

①使用b+樹索引找到sage = 20的索引項

②通過這個索引項在b+樹的順序集上找到sage > 20的所有元組指標

③通過這些指標讀取到student表中的所有年齡大於20的學生記錄

讀寫總塊數:對b+樹掃瞄時,對該檢索路徑上每個結點的讀寫塊數+最終讀取的student表中滿足條件元組的塊數

很明顯,與直接讀取再做選擇相比,大大降低了讀寫的塊數。

第2題中涉及的主要是估算磁碟讀寫的塊數,在課本288頁,有一些代價估算的公式,有些可以理解,有些比較難理解,就直接拿來用了。

1.全表掃瞄 cost = 基本表大小塊數b

2.b+樹索引掃瞄

(1)選擇條件中為「碼 = 值

碼唯一標識元組,b+樹層數為l cost = l+1;

(2)選擇條件涉及非碼屬性

結果不唯一 cost = l+s(滿足條件元組數)

3.巢狀迴圈連線

我不太理解書上的公式。涉及這個演算法,還是參照281頁的示例,比較好理解。注意連線結果一般需要寫進中間檔案,要加上對中間檔案的讀寫。

4.排序合併連線

有序:cost = 兩個表個掃瞄一遍塊數 + 中間檔案(連線結果)讀寫塊數

無序:在有序的條件上在加上排序代價。

包含b個塊的檔案排序代價 = (2b)+(2b*log2_2​

1.代數優化(作業3,5題)

借助優化工具:查詢樹

①語法樹——②初始關係代數語法樹——③根據規則優化查詢樹

總結常用規則(題中主要涉及的規則):

①將選擇和下面的笛卡爾積合併為連線

②將涉及單個表的選擇或投影下移到葉子端直接與相應的表相連

2.物理優化(作業4題)

選擇高效合理的操作演算法或訪問路徑。涉及到代價估算(作業2題)

相應的操作演算法:

選擇操作:①全表掃瞄 ②索引掃瞄

連線操作:①巢狀迴圈 ②排序合併 ③索引連線

【心得】在估算磁碟讀寫塊數時,有些亂,在優化查詢樹的時候,很多規則,不知道從哪下手。感覺這章內容有些鬆散,有些亂。作業題與前面的例題相似,參照著例題做,沒有很難,時間也沒有很長。

第九章 優化器

優化器的作用是在ast中找出靜態子樹並打上標記,有以下兩個好處 每次重新渲染時,不需要為靜態子樹建立新節點 在虛擬dom中打補丁的過程可以跳過 優化器的內部實現主要分為兩個步驟 在ast中找出所有靜態節點並打上標記 在ast中找出所有靜態根節點並打上標記 通過遞迴的方式從上向下標記靜態節點時,如果乙...

《資料庫系統概論》 第九章 關係查詢處理和查詢優化

查詢分析 詞法分析 語法分析 查詢檢查 語義分析 是否有許可權 是否破壞完整性 檢視轉換 查詢優化 代數優化 邏輯優化 和物理優化 基於規則 代價 語義 生成查詢計畫樹 查詢執行 自底向上 自頂向下策略 選擇操作的實現 全表掃瞄 索引掃瞄 連線操作的實現 查詢處理中最常用最耗時的操作之一 在集中式資...

資料庫系統概論(第九章關係查詢處理和查詢優化)

關聯式資料庫管理系統查詢處理可以分為4個階段 查詢分析 查詢檢查 查詢優化和查詢執行 查詢分析 詞法分析 語法分析 查詢檢查 語義分析 是否有許可權 是否破壞完整性 檢視轉換 查詢優化 代數優化 邏輯優化 和物理優化 基於規則 代價 語義 生成查詢計畫樹 查詢執行 自底向上 自頂向下策略 選擇操作的...