信息科學與技術學院計算機系課件_第1頁
信息科學與技術學院計算機系課件_第2頁
信息科學與技術學院計算機系課件_第3頁
信息科學與技術學院計算機系課件_第4頁
信息科學與技術學院計算機系課件_第5頁
已閱讀5頁,還剩127頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

信息科學與技術學院計算機系數據庫系統概論AnIntroductiontoDatabaseSystem第九章關系查詢處理和查詢優化AnIntroductiontoDatabaseSystem信息科學與技術學院計算機系數據庫系統概論AnIntrodu1第九章

關系系統及其查詢優化9.1關系數據庫系統的查詢處理9.2關系數據庫系統的查詢優化9.3代數優化9.4物理優化9.3小結AnIntroductiontoDatabaseSystem第九章關系系統及其查詢優化9.1關系數據庫系統的查詢處29.1關系數據庫系統的查詢處理9.1.1查詢處理步驟9.1.2實現查詢操作的算法示例AnIntroductiontoDatabaseSystem9.1關系數據庫系統的查詢處理9.1.1查詢處理步驟An39.1.1查詢處理步驟查詢分析詞法/語法/語義分析符號名轉換查詢檢查語義檢查安全性檢查完整性檢查查詢優化代數優化物理優化查詢執行查詢計劃生成代碼生成AnIntroductiontoDatabaseSystem9.1.1查詢處理步驟查詢分析AnIntroductio49.1關系數據庫系統的查詢處理9.1.1查詢處理步驟9.1.2實現查詢操作的算法示例AnIntroductiontoDatabaseSystem9.1關系數據庫系統的查詢處理9.1.1查詢處理步驟An59.1.2實現查詢操作的算法示例一選擇操作的實現二連接操作的實現AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例一選擇操作的實現AnI69.1.2實現查詢操作的算法示例一選擇操作的實現1、簡單的全表掃描方法2、索引(或散列)掃描方法[例1]Select*fromstudent where<條件表達式>表達式情況:C1:無條件;C2:Sno=‘200215121’;C3:Sage>20;C4:Sdept=‘CS’ANDSage>20;AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例一選擇操作的實現AnI79.1.2實現查詢操作的算法示例1、簡單的全表掃描方法AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例1、簡單的全表掃描方法An89.1.2實現查詢操作的算法示例2、索引(或散列)掃描方法[例1-C2]Sno上有索引[例1-C3]Sage上有B+樹索引[例1-C4]Sdept和Sage上都有索引AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例2、索引(或散列)掃描方法99.1.2實現查詢操作的算法示例二連接操作的實現1、嵌套循環方法(nestedloop)2、排序-合并方法(sort-mergejoin)3、索引連接(IndexJoin)方法4、HashJoin方法[例2]Select*fromstudent,sc wherestudent.sno=sc.sno;AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例二連接操作的實現AnI109.1.2實現查詢操作的算法示例1、嵌套循環方法AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例1、嵌套循環方法AnIn119.1.2實現查詢操作的算法示例2、排序合并方法20021512120021512220021512320021512420021512122002151213200215121120021512222002151223200215123520021512332002151231SNOSNOCNOAnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例2、排序合并方法20021129.1.2實現查詢操作的算法示例3、索引連接方法20021512320021512220021512120021512420021512122002151233200215123120021512122002151223200215121520021512232002151231SNOSNOCNO索引表AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例3、索引連接方法20021139.1.2實現查詢操作的算法示例3、HashJoin方法20021512320021512220021512120021512412002151233200215122520021512132002151222200215121120021512332002151232200215121SNOSNOCNOAnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例3、HashJoin方法14第四章

關系系統及其查詢優化9.1關系數據庫系統的查詢處理9.2關系數據庫系統的查詢優化9.3代數優化9.4物理優化9.3小結AnIntroductiontoDatabaseSystem第四章關系系統及其查詢優化9.1關系數據庫系統的查詢處159.2關系數據庫系統的查詢優化查詢優化的必要性查詢優化極大地影響RDBMS的性能。

查詢優化的可能性關系數據語言的級別很高,使DBMS可以從關系表達式中分析查詢語義。AnIntroductiontoDatabaseSystem9.2關系數據庫系統的查詢優化查詢優化的必要性AnIntr169.2.1查詢優化概述關系系統的查詢優化既是RDBMS的關鍵技術又是關系系統的優點所在;大大減輕了用戶的負擔。AnIntroductiontoDatabaseSystem9.2.1查詢優化概述關系系統的查詢優化既是RDBMS的關179.2.1查詢優化概述由DBMS進行查詢優化的好處用戶不必考慮如何最好地表達查詢以獲得較好的效率系統可以比用戶程序的優化做得更好 (1)優化器可以從數據字典中獲取許多統計信息,而用戶程序則難以獲得這些信息

AnIntroductiontoDatabaseSystem9.2.1查詢優化概述由DBMS進行查詢優化的好處AnI18由DBMS進行查詢優化的好處(2)如果數據庫的物理統計信息改變了,系統可以自動對查詢重新優化以選擇相適應的執行計劃。 在非關系系統中必須重寫程序,而重寫程序在實際應用中往往是不太可能的。(3)優化器可以考慮數百種不同的執行計劃,而程序員一般只能考慮有限的幾種可能性。(4)優化器中包括了很多復雜的優化技術AnIntroductiontoDatabaseSystem由DBMS進行查詢優化的好處(2)如果數據庫的物理統計信息改199.2.1查詢優化概述集中式數據庫查詢開銷:I/O+CPU+內存分布式數據庫查詢開銷:I/O+CPU+內存+通信代價查詢優化的總目標選擇有效策略,求得給定關系表達式的值,使得查詢代價較小AnIntroductiontoDatabaseSystem9.2.1查詢優化概述集中式數據庫查詢開銷:AnIntr209.2.2一個實例例3:求選修了課程C2的學生姓名

SELECTStudent.Sname FROMStudent,SC WHEREStudent.Sno=SC.Sno ANDSC.Cno='2';AnIntroductiontoDatabaseSystem9.2.2一個實例例3:求選修了課程C2的學生姓名AnI219.2.2一個實例(續)假設1:外存: Student:1000條,SC:10000條,選修2號課程:50條假設2:一個內存塊裝元組:10個Student,或100個SC, 內存中一次可以存放:5塊Student元組,1塊SC元組和若干塊連接結果元組假設3:讀寫速度:20塊/秒假設4:連接方法:基于數據塊的嵌套循環法

AnIntroductiontoDatabaseSystem9.2.2一個實例(續)假設1:外存:AnIntrod229.2.2一個實例(續)三種策略:Q1=ПSname(бStudent.Sno=SC.Sno∧SC.Cno='2'(Student×SC))

Q2=ПSname(бSC.Cno='2'(StudentSC))Q2=ПSname(StudentбSC.Cno='2'(SC))

AnIntroductiontoDatabaseSystem9.2.2一個實例(續)三種策略:AnIntroduc23執行策略1Q1=ПSname(бStudent.Sno=SC.Sno

∧SC.Cno='2'

(Student×SC))

①Student×SC讀取總塊數=讀Student表塊數+讀SC表遍數*每遍塊數

=1000/10+(1000/(10×5))×(10000/100)=100+20×100=2100

讀數據時間=2100/20=105秒AnIntroductiontoDatabaseSystem執行策略1Q1=ПSname(бStudent.Sno=S24不同的執行策略,考慮I/O時間

中間結果大小=1000*10000=107(1千萬條元組)

寫中間結果時間=10000000/10/20=50000秒

②б

讀數據時間=50000秒

③П總時間=105+50000+50000秒=100105秒=27.8小時AnIntroductiontoDatabaseSystem不同的執行策略,考慮I/O時間

中間結果大小=1000259.2.2一個實例(續)策略2.Q2=ПSname(бSC.Cno='2'(StudentSC))

① 讀取總塊數=2100塊 讀數據時間=2100/20=105秒 中間結果大小=10000(減少1000倍) 寫中間結果時間=10000/10/20=50秒

②б

讀數據時間=50秒

③П

總時間=105+50+50秒=205秒=3.4分

AnIntroductiontoDatabaseSystem9.2.2一個實例(續)策略2.Q2=ПSname(269.2.2一個實例(續)策略3.Q3=ПSname(StudentбSC.Cno='2'(SC))

①б 讀SC表總塊數=10000/100=100塊

讀數據時間=100/20=5秒

中間結果大小=50條不必寫入外存

② 讀Student表總塊數=1000/10=100塊

讀數據時間=100/20=5秒

③П

總時間=5+5秒=10秒AnIntroductiontoDatabaseSystem9.2.2一個實例(續)策略3.Q3=ПSname(S279.2.2一個實例(續)策略4.Q2=ПSname(StudentбSC.Cno='2'(SC))假設SC表在Cno上有索引,Student表在Sno上有索引

①б 讀SC表索引= 讀SC表總塊數=50/100<1塊 讀數據時間

中間結果大小=50條不必寫入外存AnIntroductiontoDatabaseSystem9.2.2一個實例(續)策略4.Q2=ПSname(S289.2.2一個實例(續)② 讀Student表索引= 讀Student表總塊數=50/10=5塊 讀數據時間③П總時間<10秒AnIntroductiontoDatabaseSystem9.2.2一個實例(續)②AnIntroduction29第九章

關系系統及其查詢優化9.1關系數據庫系統的查詢處理9.2關系數據庫系統的查詢優化9.3代數優化9.4物理優化9.3小結AnIntroductiontoDatabaseSystem第九章關系系統及其查詢優化9.1關系數據庫系統的查詢處309.3代數優化9.3.1關系代數表達式等價變換規則9.3.2查詢樹的啟發式優化AnIntroductiontoDatabaseSystem9.3代數優化9.3.1關系代數表達式等價變換規則An319.3.1關系代數等價變換規則關系代數表達式等價指用相同的關系代替兩個表達式中相應的關系所得到的結果是相同的上面的優化策略大部分都涉及到代數表達式的變換AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則關系代數表達式等價AnI32

9.3.1關系代數等價變換規則設E1、E2等是關系代數表達式,F是條件表達式

l.連接、笛卡爾積交換律 E1×E2≡E2×E1 E1E2≡E2E1 E1FE2≡E2FE1

AnIntroductiontoDatabaseSystem

9.3.1關系代數等價變換規則AnIntroduct339.3.1關系代數等價變換規則

2.連接、笛卡爾積的結合律(E1×E2)×E3≡E1×(E2×E3)(E1E2)E3≡E1(E2E3)(E1E2)E3≡E1(E2E3)

F

F

F

FAnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則

AnIntroducti349.3.1關系代數等價變換規則3.投影的串接定律

π

A1,A2,

,An(π

B1,B2,,Bm(E))≡π

A1,A2,,An(E)假設:1) E是關系代數表達式2) Ai(i=1,2,…,n),Bj(j=l,2,…,m)是屬性名3){A1,A2,…,An}構成{Bl,B2,…,Bm}的子集AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則3.投影的串接定律AnI359.3.1關系代數等價變換規則4.選擇的串接定律

бF1(б

F2(E))≡бF1∧F2(E)選擇的串接律說明選擇條件可以合并這樣一次就可檢查全部條件。AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則4.選擇的串接定律AnI369.3.1關系代數等價變換規則5.選擇與投影的交換律(1)假設:選擇條件F只涉及屬性A1,…,AnбF(πA1,A2,,An(E))≡πA1,A2,,An(бF(E))

(2)假設:F中有不屬于A1,…,An的屬性B1,…,Bmπ

A1,A2,,An

(

бF

(E))≡

πA1,A2,,An(бF

(πA1,A2,,An,B1,B2,,Bm(E)))AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則5.選擇與投影的交換律An379.3.1關系代數等價變換規則6.選擇與笛卡爾積的交換律(1)假設:F中涉及的屬性都是E1中的屬性 бF(E1×E2)≡бF(E1)×E2

(2)假設:F=F1∧F2,并且F1只涉及E1中的屬性,

F2只涉及E2中的屬性 則由上面的等價變換規則1,4,6可推出: бF(E1×E2)≡бF1(E1)×бF2(E2)

AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則6.選擇與笛卡爾積的交換律389.3.1關系代數等價變換規則(3)假設:F=F1∧F2,

F1只涉及E1中的屬性,F2涉及E1和E2兩者的屬性 бF(E1×E2)≡бF2(бF1(E1)×E2)

它使部分選擇在笛卡爾積前先做

AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則(3)假設:F=F1∧F399.3.1關系代數等價變換規則7.選擇與并的交換 假設:E=E1∪E2,E1,E2有相同的屬性名 бF(E1∪E2)≡бF(E1)∪бF(E2)

8.選擇與差運算的交換 假設:E1與E2有相同的屬性名 бF(E1-E2)≡бF(E1)-бF(E2)AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則7.選擇與并的交換AnI409.3.1關系代數等價變換規則9.選擇對自然連接的分配律 бF(E1E2)≡бF(E1)бF(E2)AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則9.選擇對自然連接的分配律419.3.1關系代數等價變換規則10.投影與笛卡爾積的交換

假設:E1和E2是兩個關系表達式,

A1,…,An是E1的屬性,

B1,…,Bm是E2的屬性πA1,A2,…,An,B1,B2,…,Bm(E1×E2)≡ πA1,A2,…,An(E1)×πB1,B2,…,Bm(E2)AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則10.投影與笛卡爾積的交換42關系代數等價變換規則(續)11.投影與并的交換

假設:E1和E2有相同的屬性名 πA1,A2,…,An(E1∪E2)≡ πA1,A2,…,An(E1)∪πA1,A2,…,An(E2)AnIntroductiontoDatabaseSystem關系代數等價變換規則(續)11.投影與并的交換AnIn43小結1-2:連接、笛卡爾積的交換律、結合律3:合并或分解投影運算4:合并或分解選擇運算5-9:選擇運算與其他運算交換5,10,11:投影運算與其他運算交換AnIntroductiontoDatabaseSystem小結1-2:連接、笛卡爾積的交換律、結合律AnInt449.3代數優化9.3.1關系代數表達式等價變換規則9.3.2查詢樹的啟發式優化AnIntroductiontoDatabaseSystem9.3代數優化9.3.1關系代數表達式等價變換規則An459.3.2查詢樹的啟發式優化—典型啟發式規則:選擇運算應盡可能先做

目的:減小中間關系在執行連接操作前對關系適當進行預處理按連接屬性排序在連接屬性上建立索引

投影運算和選擇運算同時做目的:避免重復掃描關系將投影運算與其前面或后面的雙目運算結合目的:減少掃描關系的遍數AnIntroductiontoDatabaseSystem9.3.2查詢樹的啟發式優化—典型啟發式規則:選擇運算應盡469.3.2查詢樹的啟發式優化—典型啟發式規則:某些選擇運算+在其前面執行的笛卡爾積===>連接運算例:бStudent.Sno=SC.Sno(Student×SC)

StudentSC提取公共子表達式AnIntroductiontoDatabaseSystem9.3.2查詢樹的啟發式優化—典型啟發式規則:某些選擇運算479.3.2查詢樹的啟發式優化—算法算法:關系表達式的優化輸入:一個關系表達式的語法樹。輸出:計算該表達式的程序。方法:(1)分解選擇運算利用規則4把形如бF1∧F2∧…∧Fn(E)變換為бF1(бF2(…(бFn(E))…))AnIntroductiontoDatabaseSystem9.3.2查詢樹的啟發式優化—算法算法:關系表達式的優化A48關系代數表達式的優化算法(續)(2)通過交換選擇運算,將其盡可能移到葉端對每一個選擇,利用規則4~9盡可能把它移到樹的葉端。

(3)通過交換投影運算,將其盡可能移到葉端

對每一個投影利用規則3,10,11,5中的一般形式盡可能把它移向樹的葉端。

AnIntroductiontoDatabaseSystem關系代數表達式的優化算法(續)(2)通過交換選擇運算,將其49關系代數表達式的優化算法(續)(4)合并串接的選擇和投影,以便能同時執行或在一次掃描中完成利用規則3~5把選擇和投影的串接合并成單個選擇、單個投影或一個選擇后跟一個投影。使多個選擇或投影能同時執行,或在一次掃描中全部完成盡管這種變換似乎違背“投影盡可能早做”的原則,但這樣做效率更高。

AnIntroductiontoDatabaseSystem關系代數表達式的優化算法(續)(4)合并串接的選擇和投影,50關系代數表達式的優化算法(續)(5)對內結點分組把上述得到的語法樹的內節點分組。每一雙目運算(×,,∪,-)和它所有的直接祖先為一組(這些直接祖先是б,π運算)。如果其后代直到葉子全是單目運算,則也將它們并入該組,但當雙目運算是笛卡爾積(×),而且其后的選擇不能與它結合為等值連接時除外。把這些單目運算單獨分為一組。

AnIntroductiontoDatabaseSystem關系代數表達式的優化算法(續)(5)對內結點分組AnIn51關系代數表達式的優化算法(續)(6)生成程序生成一個程序,每組結點的計算是程序中的一步。各步的順序是任意的,只要保證任何一組的計算不會在它的后代組之前計算。

AnIntroductiontoDatabaseSystem關系代數表達式的優化算法(續)(6)生成程序AnIntr52優化的一般步驟1.把查詢轉換成某種內部表示2.代數優化:把語法樹轉換成標準(優化)形式3.物理優化:選擇低層的存取路徑4.生成查詢計劃,選擇代價最小的AnIntroductiontoDatabaseSystem優化的一般步驟1.把查詢轉換成某種內部表示AnIntro53優化的一般步驟(續)(1)把查詢轉換成某種內部表示例:求選修了課程C2的學生姓名 SELECTStudent.Sname FROMStudent,SC WHEREStudent.Sno=SC.Sno ANDSC.Cno='2';AnIntroductiontoDatabaseSystem優化的一般步驟(續)(1)把查詢轉換成某種內部表示AnI54(1)把查詢轉換成某種內部表示語法樹結果project(Sname)

select(SC.Cno=2)

join(Student.Sno=SC.Sno)

StudentSCAnIntroductiontoDatabaseSystem(1)把查詢轉換成某種內部表示語法樹結果project(S55關系代數語法樹πSname

SC.Cno=’2’

Student.Sno=SC.S

×

StudentSCAnIntroductiontoDatabaseSystem關系代數語法樹πSnameSC.Cno=’2’Stu56(2)代數優化利用優化算法把語法樹轉換成標準(優化)形式

πSname

Student.Sno=SC.Sno

SC.Cno=2

×

StudentSCAnIntroductiontoDatabaseSystem(2)代數優化利用優化算法把語法樹轉換成標準(優化)形式πS57第九章

關系系統及其查詢優化9.1關系數據庫系統的查詢處理9.2關系數據庫系統的查詢優化9.3代數優化9.4物理優化9.3小結AnIntroductiontoDatabaseSystem第九章關系系統及其查詢優化9.1關系數據庫系統的查詢處589.4物理優化1、基于規則的啟發式優化2、基于代價估算的優化3、兩者結合的優化方法AnIntroductiontoDatabaseSystem9.4物理優化1、基于規則的啟發式優化AnIntrodu599.4物理優化9.4.1基于啟發式規則的存取路徑選擇優化9.4.2基于代價的優化AnIntroductiontoDatabaseSystem9.4物理優化9.4.1基于啟發式規則的存取路徑選擇優化609.4.1基于啟發式規則的存取路徑選擇優化一、選擇操作的啟發式規則二、連接操作的啟發式規則 P273AnIntroductiontoDatabaseSystem9.4.1基于啟發式規則的存取路徑選擇優化AnIntrod619.4物理優化9.4.1基于啟發式規則的存取路徑選擇優化9.4.2基于代價的優化AnIntroductiontoDatabaseSystem9.4物理優化9.4.1基于啟發式規則的存取路徑選擇優化629.4.2基于代價的優化統計信息表的元組數、元組長度、占用的塊數等等屬性列不同值的個數、選擇率,最大最小值索引的層數、不同索引值的個數、索引葉結點數等代價估算示例全表掃描算法的代價估算公式索引掃描算法的代價估算公式嵌套循環連接算法的代價估算公式排序-合并連接算法的代價估算公式AnIntroductiontoDatabaseSystem9.4.2基于代價的優化統計信息AnIntroducti63第九章

關系系統及其查詢優化9.1關系數據庫系統的查詢處理9.2關系數據庫系統的查詢優化9.3代數優化9.4物理優化9.3小結AnIntroductiontoDatabaseSystem第九章關系系統及其查詢優化9.1關系數據庫系統的查詢處649.3小結查詢處理是核心、優化是關鍵查詢優化的必要性代數優化及其啟發式規則(查詢樹)物理優化(存取路徑啟發式規則、代價優化)AnIntroductiontoDatabaseSystem9.3小結查詢處理是核心、優化是關鍵AnIntroduc65

下課了。。。休息一會兒。。。攀AnIntroductiontoDatabaseSystem下課了。。。休息一會兒。。。攀AnIntro66信息科學與技術學院計算機系數據庫系統概論AnIntroductiontoDatabaseSystem第九章關系查詢處理和查詢優化AnIntroductiontoDatabaseSystem信息科學與技術學院計算機系數據庫系統概論AnIntrodu67第九章

關系系統及其查詢優化9.1關系數據庫系統的查詢處理9.2關系數據庫系統的查詢優化9.3代數優化9.4物理優化9.3小結AnIntroductiontoDatabaseSystem第九章關系系統及其查詢優化9.1關系數據庫系統的查詢處689.1關系數據庫系統的查詢處理9.1.1查詢處理步驟9.1.2實現查詢操作的算法示例AnIntroductiontoDatabaseSystem9.1關系數據庫系統的查詢處理9.1.1查詢處理步驟An699.1.1查詢處理步驟查詢分析詞法/語法/語義分析符號名轉換查詢檢查語義檢查安全性檢查完整性檢查查詢優化代數優化物理優化查詢執行查詢計劃生成代碼生成AnIntroductiontoDatabaseSystem9.1.1查詢處理步驟查詢分析AnIntroductio709.1關系數據庫系統的查詢處理9.1.1查詢處理步驟9.1.2實現查詢操作的算法示例AnIntroductiontoDatabaseSystem9.1關系數據庫系統的查詢處理9.1.1查詢處理步驟An719.1.2實現查詢操作的算法示例一選擇操作的實現二連接操作的實現AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例一選擇操作的實現AnI729.1.2實現查詢操作的算法示例一選擇操作的實現1、簡單的全表掃描方法2、索引(或散列)掃描方法[例1]Select*fromstudent where<條件表達式>表達式情況:C1:無條件;C2:Sno=‘200215121’;C3:Sage>20;C4:Sdept=‘CS’ANDSage>20;AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例一選擇操作的實現AnI739.1.2實現查詢操作的算法示例1、簡單的全表掃描方法AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例1、簡單的全表掃描方法An749.1.2實現查詢操作的算法示例2、索引(或散列)掃描方法[例1-C2]Sno上有索引[例1-C3]Sage上有B+樹索引[例1-C4]Sdept和Sage上都有索引AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例2、索引(或散列)掃描方法759.1.2實現查詢操作的算法示例二連接操作的實現1、嵌套循環方法(nestedloop)2、排序-合并方法(sort-mergejoin)3、索引連接(IndexJoin)方法4、HashJoin方法[例2]Select*fromstudent,sc wherestudent.sno=sc.sno;AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例二連接操作的實現AnI769.1.2實現查詢操作的算法示例1、嵌套循環方法AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例1、嵌套循環方法AnIn779.1.2實現查詢操作的算法示例2、排序合并方法20021512120021512220021512320021512420021512122002151213200215121120021512222002151223200215123520021512332002151231SNOSNOCNOAnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例2、排序合并方法20021789.1.2實現查詢操作的算法示例3、索引連接方法20021512320021512220021512120021512420021512122002151233200215123120021512122002151223200215121520021512232002151231SNOSNOCNO索引表AnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例3、索引連接方法20021799.1.2實現查詢操作的算法示例3、HashJoin方法20021512320021512220021512120021512412002151233200215122520021512132002151222200215121120021512332002151232200215121SNOSNOCNOAnIntroductiontoDatabaseSystem9.1.2實現查詢操作的算法示例3、HashJoin方法80第四章

關系系統及其查詢優化9.1關系數據庫系統的查詢處理9.2關系數據庫系統的查詢優化9.3代數優化9.4物理優化9.3小結AnIntroductiontoDatabaseSystem第四章關系系統及其查詢優化9.1關系數據庫系統的查詢處819.2關系數據庫系統的查詢優化查詢優化的必要性查詢優化極大地影響RDBMS的性能。

查詢優化的可能性關系數據語言的級別很高,使DBMS可以從關系表達式中分析查詢語義。AnIntroductiontoDatabaseSystem9.2關系數據庫系統的查詢優化查詢優化的必要性AnIntr829.2.1查詢優化概述關系系統的查詢優化既是RDBMS的關鍵技術又是關系系統的優點所在;大大減輕了用戶的負擔。AnIntroductiontoDatabaseSystem9.2.1查詢優化概述關系系統的查詢優化既是RDBMS的關839.2.1查詢優化概述由DBMS進行查詢優化的好處用戶不必考慮如何最好地表達查詢以獲得較好的效率系統可以比用戶程序的優化做得更好 (1)優化器可以從數據字典中獲取許多統計信息,而用戶程序則難以獲得這些信息

AnIntroductiontoDatabaseSystem9.2.1查詢優化概述由DBMS進行查詢優化的好處AnI84由DBMS進行查詢優化的好處(2)如果數據庫的物理統計信息改變了,系統可以自動對查詢重新優化以選擇相適應的執行計劃。 在非關系系統中必須重寫程序,而重寫程序在實際應用中往往是不太可能的。(3)優化器可以考慮數百種不同的執行計劃,而程序員一般只能考慮有限的幾種可能性。(4)優化器中包括了很多復雜的優化技術AnIntroductiontoDatabaseSystem由DBMS進行查詢優化的好處(2)如果數據庫的物理統計信息改859.2.1查詢優化概述集中式數據庫查詢開銷:I/O+CPU+內存分布式數據庫查詢開銷:I/O+CPU+內存+通信代價查詢優化的總目標選擇有效策略,求得給定關系表達式的值,使得查詢代價較小AnIntroductiontoDatabaseSystem9.2.1查詢優化概述集中式數據庫查詢開銷:AnIntr869.2.2一個實例例3:求選修了課程C2的學生姓名

SELECTStudent.Sname FROMStudent,SC WHEREStudent.Sno=SC.Sno ANDSC.Cno='2';AnIntroductiontoDatabaseSystem9.2.2一個實例例3:求選修了課程C2的學生姓名AnI879.2.2一個實例(續)假設1:外存: Student:1000條,SC:10000條,選修2號課程:50條假設2:一個內存塊裝元組:10個Student,或100個SC, 內存中一次可以存放:5塊Student元組,1塊SC元組和若干塊連接結果元組假設3:讀寫速度:20塊/秒假設4:連接方法:基于數據塊的嵌套循環法

AnIntroductiontoDatabaseSystem9.2.2一個實例(續)假設1:外存:AnIntrod889.2.2一個實例(續)三種策略:Q1=ПSname(бStudent.Sno=SC.Sno∧SC.Cno='2'(Student×SC))

Q2=ПSname(бSC.Cno='2'(StudentSC))Q2=ПSname(StudentбSC.Cno='2'(SC))

AnIntroductiontoDatabaseSystem9.2.2一個實例(續)三種策略:AnIntroduc89執行策略1Q1=ПSname(бStudent.Sno=SC.Sno

∧SC.Cno='2'

(Student×SC))

①Student×SC讀取總塊數=讀Student表塊數+讀SC表遍數*每遍塊數

=1000/10+(1000/(10×5))×(10000/100)=100+20×100=2100

讀數據時間=2100/20=105秒AnIntroductiontoDatabaseSystem執行策略1Q1=ПSname(бStudent.Sno=S90不同的執行策略,考慮I/O時間

中間結果大小=1000*10000=107(1千萬條元組)

寫中間結果時間=10000000/10/20=50000秒

②б

讀數據時間=50000秒

③П總時間=105+50000+50000秒=100105秒=27.8小時AnIntroductiontoDatabaseSystem不同的執行策略,考慮I/O時間

中間結果大小=1000919.2.2一個實例(續)策略2.Q2=ПSname(бSC.Cno='2'(StudentSC))

① 讀取總塊數=2100塊 讀數據時間=2100/20=105秒 中間結果大小=10000(減少1000倍) 寫中間結果時間=10000/10/20=50秒

②б

讀數據時間=50秒

③П

總時間=105+50+50秒=205秒=3.4分

AnIntroductiontoDatabaseSystem9.2.2一個實例(續)策略2.Q2=ПSname(929.2.2一個實例(續)策略3.Q3=ПSname(StudentбSC.Cno='2'(SC))

①б 讀SC表總塊數=10000/100=100塊

讀數據時間=100/20=5秒

中間結果大小=50條不必寫入外存

② 讀Student表總塊數=1000/10=100塊

讀數據時間=100/20=5秒

③П

總時間=5+5秒=10秒AnIntroductiontoDatabaseSystem9.2.2一個實例(續)策略3.Q3=ПSname(S939.2.2一個實例(續)策略4.Q2=ПSname(StudentбSC.Cno='2'(SC))假設SC表在Cno上有索引,Student表在Sno上有索引

①б 讀SC表索引= 讀SC表總塊數=50/100<1塊 讀數據時間

中間結果大小=50條不必寫入外存AnIntroductiontoDatabaseSystem9.2.2一個實例(續)策略4.Q2=ПSname(S949.2.2一個實例(續)② 讀Student表索引= 讀Student表總塊數=50/10=5塊 讀數據時間③П總時間<10秒AnIntroductiontoDatabaseSystem9.2.2一個實例(續)②AnIntroduction95第九章

關系系統及其查詢優化9.1關系數據庫系統的查詢處理9.2關系數據庫系統的查詢優化9.3代數優化9.4物理優化9.3小結AnIntroductiontoDatabaseSystem第九章關系系統及其查詢優化9.1關系數據庫系統的查詢處969.3代數優化9.3.1關系代數表達式等價變換規則9.3.2查詢樹的啟發式優化AnIntroductiontoDatabaseSystem9.3代數優化9.3.1關系代數表達式等價變換規則An979.3.1關系代數等價變換規則關系代數表達式等價指用相同的關系代替兩個表達式中相應的關系所得到的結果是相同的上面的優化策略大部分都涉及到代數表達式的變換AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則關系代數表達式等價AnI98

9.3.1關系代數等價變換規則設E1、E2等是關系代數表達式,F是條件表達式

l.連接、笛卡爾積交換律 E1×E2≡E2×E1 E1E2≡E2E1 E1FE2≡E2FE1

AnIntroductiontoDatabaseSystem

9.3.1關系代數等價變換規則AnIntroduct999.3.1關系代數等價變換規則

2.連接、笛卡爾積的結合律(E1×E2)×E3≡E1×(E2×E3)(E1E2)E3≡E1(E2E3)(E1E2)E3≡E1(E2E3)

F

F

F

FAnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則

AnIntroducti1009.3.1關系代數等價變換規則3.投影的串接定律

π

A1,A2,

,An(π

B1,B2,,Bm(E))≡π

A1,A2,,An(E)假設:1) E是關系代數表達式2) Ai(i=1,2,…,n),Bj(j=l,2,…,m)是屬性名3){A1,A2,…,An}構成{Bl,B2,…,Bm}的子集AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則3.投影的串接定律AnI1019.3.1關系代數等價變換規則4.選擇的串接定律

бF1(б

F2(E))≡бF1∧F2(E)選擇的串接律說明選擇條件可以合并這樣一次就可檢查全部條件。AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則4.選擇的串接定律AnI1029.3.1關系代數等價變換規則5.選擇與投影的交換律(1)假設:選擇條件F只涉及屬性A1,…,AnбF(πA1,A2,,An(E))≡πA1,A2,,An(бF(E))

(2)假設:F中有不屬于A1,…,An的屬性B1,…,Bmπ

A1,A2,,An

(

бF

(E))≡

πA1,A2,,An(бF

(πA1,A2,,An,B1,B2,,Bm(E)))AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則5.選擇與投影的交換律An1039.3.1關系代數等價變換規則6.選擇與笛卡爾積的交換律(1)假設:F中涉及的屬性都是E1中的屬性 бF(E1×E2)≡бF(E1)×E2

(2)假設:F=F1∧F2,并且F1只涉及E1中的屬性,

F2只涉及E2中的屬性 則由上面的等價變換規則1,4,6可推出: бF(E1×E2)≡бF1(E1)×бF2(E2)

AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則6.選擇與笛卡爾積的交換律1049.3.1關系代數等價變換規則(3)假設:F=F1∧F2,

F1只涉及E1中的屬性,F2涉及E1和E2兩者的屬性 бF(E1×E2)≡бF2(бF1(E1)×E2)

它使部分選擇在笛卡爾積前先做

AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則(3)假設:F=F1∧F1059.3.1關系代數等價變換規則7.選擇與并的交換 假設:E=E1∪E2,E1,E2有相同的屬性名 бF(E1∪E2)≡бF(E1)∪бF(E2)

8.選擇與差運算的交換 假設:E1與E2有相同的屬性名 бF(E1-E2)≡бF(E1)-бF(E2)AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則7.選擇與并的交換AnI1069.3.1關系代數等價變換規則9.選擇對自然連接的分配律 бF(E1E2)≡бF(E1)бF(E2)AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則9.選擇對自然連接的分配律1079.3.1關系代數等價變換規則10.投影與笛卡爾積的交換

假設:E1和E2是兩個關系表達式,

A1,…,An是E1的屬性,

B1,…,Bm是E2的屬性πA1,A2,…,An,B1,B2,…,Bm(E1×E2)≡ πA1,A2,…,An(E1)×πB1,B2,…,Bm(E2)AnIntroductiontoDatabaseSystem9.3.1關系代數等價變換規則10.投影與笛卡爾積的交換108關系代數等價變換規則(續)11.投影與并的交換

假設:E1和E2有相同的屬性名 πA1,A2,…,An(E1∪E2)≡ πA1,A2,…,An(E1)∪πA1,A2,…,An(E2)AnIntroductiontoDatabaseSystem關系代數等價變換規則(續)11.投影與并的交換AnIn109小結1-2:連接、笛卡爾積的交換律、結合律3:合并或分解投影運算4:合并或分解選擇運算5-9:選擇運算與其他運算交換5,10,11:投影運算與其他運算交換AnIntroductiontoDatabaseSystem小結1-2:連接、笛卡爾積的交換律、結合律AnInt1109.3代數優化9.3.1關系代數表達式等價變換規則9.3.2查詢樹的啟發式優化AnIntroductiontoDatabaseSystem9.3代數優化9.3.1關系代數表達式等價變換規則An1119.3.2查詢樹的啟發式優化—典型啟發式規則:選擇運算應盡可能先做

目的:減小中間關系在執行連接操作前對關系適當進行預處理按連接屬性排序在連接屬性上建立索引

投影運算和選擇運算同時做目的:避免重復掃描關系將投影運算與其前面或后面的雙目運算結合目的:減少掃描關系的遍數AnIntroductiontoDatabaseSystem9.3.2查詢樹的啟發式優化—典型啟發式規則:選擇運算應盡1129.3.2查詢樹的啟發式優化—典型啟發式規則:某些選擇運算+在其前面執行的笛卡爾積===>連接運算例:бStudent.Sno=SC.Sno(Student×SC)

StudentSC提取公共子表達式AnIntroductiontoDatabaseSystem9.3.2查詢樹的啟發式優化—典型啟發式規則:某些選擇運算1139.3.2查詢樹的啟發式優化—算法算法:關系表達式的優化輸入:一個關系表達式的語法樹。輸出:計算該表達式的程序。方法:(1)分解選擇運算利用規則4把形如бF1∧F2∧…∧Fn(E)變換為бF1(бF2(…(бFn(E))…))AnIntroductiontoDatabaseSystem9.3.2查詢樹的啟發式優化—算法算法:關系表達式的優化A114關系代數表達式的優化算法(續)(2)通過交換選擇運算,將其盡可能移到葉端對每一個選擇,利用規則4~9盡可能把它移到樹的葉端。

(3)通過交換投影運算,將其盡可能移到葉端

對每一個投影利用規則3,10,11,5中的一般形式盡可能把它移向樹的葉端。

AnIntroductiontoDatabaseSystem關系代數表達式的優化算法(續)(2)通過交換選擇運算,將其115關系代數表達式的優化算法(續)(4)合并串接的選擇和投影,以便能同時執行或在一次掃描中完成利用規則3~5把選擇和投影的串接合并成單個選擇、單個投影或一個選擇后跟一個投影。使多個選擇或投影能同時執行,或在一次掃描中全部完成盡管這種變換似乎違背“投影盡可能早做”的原則,但這樣做效

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論