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

2021-10-04 10:23:43 字數 2856 閱讀 2364

關聯式資料庫管理系統查詢處理可以分為4個階段:查詢分析、查詢檢查、查詢優化和查詢執行

查詢分析:詞法分析、語法分析

查詢檢查:語義分析、是否有許可權、是否破壞完整性、檢視轉換

查詢優化:代數優化(邏輯優化)和物理優化(基於規則、代價、語義),生成查詢計畫樹

查詢執行:自底向上/自頂向下策略

選擇操作的實現:全表掃瞄/索引掃瞄

連線操作的實現:查詢處理中最常用最耗時的操作之一

巢狀迴圈演算法:最簡單最通用,實際上都是基於資料塊的迴圈(m*n)

排序-合併演算法:常用與等值連線,尤其適合各個表已經排好序的情況。(m+n)

第一步:如果參與連線的表沒有排好序,根據連線屬性排序

第二步:sorted_merge

索引連線演算法:根據表上已經建立好的索引,根據索引查詢匹配的元組

hash join 演算法:等值連線,要求記憶體足夠大,小表的hash表要全部能夠放進記憶體。分成兩個階段

第一步,劃分階段,為小表建立hash表,根據連線屬性作為hash碼

第二步,試探階段,對另外一張表的連線屬性hash一遍,將匹配的元組連線起來

9.2.1 查詢優化概述

重要性:關係系統的查詢優化即是關聯式資料庫管理系統實現的關鍵技術,又是關係系統的優點所在。它減輕了使用者選擇訪問路徑的負擔,使用者只要提出「幹什麼」,而不必指出「怎麼幹」,

由dbms進行查詢優化的好處:

查詢優化的優點不僅在於使用者不必考慮如何最好的表達查詢以獲得較高的效率,而且在於系統可以比使用者程式的「優化」做得更好。

可能性:

優化器可以從資料字典中獲取許多統計資訊,

如果資料庫的物理統計資訊改變了,系統可以自動對查詢進行重新優化以選擇相適應的執行計畫。

優化器可以考慮數百種不同的執行計畫,而程式設計師一般只考慮有限的幾種可能性。

優化器中包括了很多複雜的優化技術。

在集中式資料庫中,查詢執行開銷主要包括磁碟訪問塊數(io代價)、處理機時間(cpu代價)以及查詢的記憶體開銷

計算查詢代價時一般用查詢處理讀寫的塊數作為衡量單位

選擇運算應盡可能先做

把投影運算和選擇運算同時進行:這兩者都是一元操作,乙個元組能不能成為結果只取決於其本身

把投影同其前或後的雙目運算結合起來

把某些選擇同在它前面要執行的笛卡兒積結合起來稱為乙個連線運算

找出公共子表示式

選擇操作的啟發式規則:

對於小關係,全表掃瞄

對於大關係:

1. 若選擇條件是主碼,則可以選擇主碼索引,因為主碼索引一般是被自動建立的

2. 若選擇條件是非主屬性的等職查詢,並且選擇列上有索引,如果選擇比例較小(10%)可以使用索引掃瞄,否則全表掃瞄

3. 若選擇條件是屬性上的非等職查詢或者範圍查詢,同上

4. 對於用and連線的合取選擇條件,若有組合索引,優先用組合索引方法;如果某些屬性上有一般索引,則用索引掃瞄,否則全表掃瞄

5. 對於用or連線的析取選擇條件,全表掃瞄

連線操作的啟發式規則

1. 若兩個表都已經按連線屬性排序,則選用排序-合併演算法

2. 若乙個表在連線屬性上有索引,則使用索引連線方法

3. 若其中乙個表較小,則選用hash join

4. 最後可以使用巢狀迴圈,小表坐外表

統計資訊:資料字典中儲存了優化器需要的優化資訊,包括基本表的元組總數、長度、占用塊數,每個列的不同值的個數、最大/小值、是否有索引,索引的層數、個數、選擇基數等

代價估算例項

1 .試述查詢優化在關係資料庫系統中的重要性和可能性。

答:重要性:關係系統的查詢優化既是 rdbms 實現的關鍵技術又是關係系統的優點所在。它減輕了使用者選擇訪問路徑的負擔。使用者只要提出「幹什麼」,不必指出「怎麼幹」。查詢優化的優點不僅在於使用者不必考慮如何最好地表達查詢以獲得較好的效率,而且在於系統可以比使用者程式的「優化』夕做得更好。

可能性:這是因為:

2 .對學生一課程資料庫有如下的查詢: sei 王 ct cn 即 ne from student , cou 拐 e , sc where student . sno = sc . sno and sc . cllo = coll 拐 e . cllo and stu 擊 nt . sdept = ! 15 ! ; 此查詢要求資訊系學生選修了的所有課程名稱。試畫出用關係代數表示的語法樹,並用關係代數表示式優化演算法對原始的語法樹進行優化處理,畫出優化後的標準語法樹。

答:

3 .試述查詢優化的一般準則。

答:下面的優化策略一般能提高查詢效率:

4 .試述查詢優化的一般步驟。

答:各個關係系統的優化方法不盡相同,大致的步驟可以歸納如下:

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

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

第九章 資料庫

redis 中資料庫的概念 切換資料庫的命令 select 1 資料庫鍵空間 key space redis 每個資料庫都有乙個資料庫鍵空間,資料庫鍵空間是一種字典結構 dict 字典 expires 字典 設定鍵的生存時間和過期時間 過期字典儲存鍵的過期時間 expire,pexpire,expi...

第九章 資料庫安全

第九章 資料庫安全 9.1.1建立使用者 create user user name identified by password default tablespace def tabspace temproary tablespace temp tabspace 乙個使用者要想連線到資料庫上,就必...