資源描述:
《關(guān)系查詢處理與查詢優(yōu)化》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第8章關(guān)系查詢處理與查詢優(yōu)化8.1關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢處理8.2關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化8.3查詢優(yōu)化的一般準(zhǔn)則8.4代數(shù)優(yōu)化8.5物理優(yōu)化8.6小結(jié)本章要求與重難點(diǎn)掌握關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢處理步驟掌握RDBMS中查詢優(yōu)化技術(shù)(重點(diǎn)和難點(diǎn))第8章關(guān)系查詢處理與查詢優(yōu)化8.1關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢處理8.2關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化8.3查詢優(yōu)化的一般準(zhǔn)則8.4代數(shù)優(yōu)化8.5物理優(yōu)化8.6小結(jié)8.1關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢處理1.查詢分析將查詢轉(zhuǎn)換成某種內(nèi)部表示,通常是語法樹。2.查詢檢查根據(jù)一定的等價(jià)變換規(guī)則把語法樹轉(zhuǎn)換成標(biāo)準(zhǔn)(優(yōu)化)形式。關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢處理(續(xù))3.查詢優(yōu)化選
2、擇低層的操作算法對(duì)于語法樹中的每一個(gè)操作計(jì)算各種執(zhí)行算法的執(zhí)行代價(jià)選擇代價(jià)小的執(zhí)行算法4.查詢執(zhí)行生成查詢計(jì)劃(查詢執(zhí)行方案)查詢計(jì)劃是由一系列內(nèi)部操作組成的。第8章關(guān)系查詢處理與查詢優(yōu)化8.1關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢處理8.2關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化8.3查詢優(yōu)化的一般準(zhǔn)則8.4代數(shù)優(yōu)化8.5物理優(yōu)化8.6小結(jié)8.2關(guān)系數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化查詢優(yōu)化的必要性查詢優(yōu)化極大地影響RDBMS的性能。查詢優(yōu)化的可能性關(guān)系數(shù)據(jù)語言的級(jí)別很高,使DBMS可以從關(guān)系表達(dá)式中分析查詢語義。關(guān)系數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化(續(xù))用戶不必考慮如何最好地表達(dá)查詢以獲得較好的效率系統(tǒng)可以比用戶程序的優(yōu)化做得更好(1
3、)優(yōu)化器可以從數(shù)據(jù)字典中獲取許多統(tǒng)計(jì)信息,而用戶程序則難以獲得這些信息關(guān)系數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化(續(xù))(2)如果數(shù)據(jù)庫的物理統(tǒng)計(jì)信息改變了,系統(tǒng)可以自動(dòng)對(duì)查詢重新優(yōu)化以選擇相適應(yīng)的執(zhí)行計(jì)劃。在非關(guān)系系統(tǒng)中必須重寫程序,而重寫程序在實(shí)際應(yīng)用中往往是不太可能的。(3)優(yōu)化器可以考慮數(shù)百種不同的執(zhí)行計(jì)劃,而程序員一般只能考慮有限的幾種可能性。關(guān)系數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化(續(xù))查詢優(yōu)化的總目標(biāo)選擇有效策略,求得給定關(guān)系表達(dá)式的值關(guān)系數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化(續(xù))例:求選修了課程C2的學(xué)生姓名SELECTStudent.SnameFROMStudent,SCWHEREStudent.Sno=SC.Sn
4、oANDSC.Cno='2';關(guān)系數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化(續(xù))假設(shè)1:外存:Student:1000條,SC:10000條,選修2號(hào)課程:50條假設(shè)2:一個(gè)內(nèi)存塊裝元組:10個(gè)Student,或100個(gè)SC,內(nèi)存中一次可以存放:5塊Student元組,1塊SC元組和若干塊連接結(jié)果元組假設(shè)3:讀寫速度:20塊/秒假設(shè)4:連接方法:基于數(shù)據(jù)塊的嵌套循環(huán)法執(zhí)行策略1Q1=ПSname(бStudent.Sno=SC.Sno∧SC.Cno='2'(Student×SC))①Student×SC讀取總塊數(shù)=讀Student表塊數(shù)+讀SC表遍數(shù)*每遍塊數(shù)=1000/10+(1000/(10×
5、5))×(10000/100)=100+20×100=2100讀數(shù)據(jù)時(shí)間=2100/20=105秒不同的執(zhí)行策略,考慮I/O時(shí)間中間結(jié)果大小=1000*10000=107(1千萬條元組)寫中間結(jié)果時(shí)間=10000000/10/20=50000秒②б讀數(shù)據(jù)時(shí)間=50000秒③П總時(shí)間=105+50000+50000秒=100105秒=27.8小時(shí)關(guān)系數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化(續(xù))2.Q2=ПSname(бSC.Cno='2'(StudentSC))①讀取總塊數(shù)=2100塊讀數(shù)據(jù)時(shí)間=2100/20=105秒中間結(jié)果大小=10000(減少1000倍)寫中間結(jié)果時(shí)間=10000/10/2
6、0=50秒②б讀數(shù)據(jù)時(shí)間=50秒③П總時(shí)間=105+50+50秒=205秒=3.8分關(guān)系數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化(續(xù))3.Q2=ПSname(StudentбSC.Cno='2'(SC))①б讀SC表總塊數(shù)=10000/100=100塊讀數(shù)據(jù)時(shí)間=100/20=5秒中間結(jié)果大小=50條不必寫入外存②讀Student表總塊數(shù)=1000/10=100塊讀數(shù)據(jù)時(shí)間=100/20=5秒③П總時(shí)間=5+5秒=10秒關(guān)系數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化(續(xù))4.Q2=ПSname(StudentбSC.Cno='2'(SC))假設(shè)SC表在Cno上有索引,Student表在Sno上有索引①б讀SC表索引=讀S
7、C表總塊數(shù)=50/100<1塊讀數(shù)據(jù)時(shí)間中間結(jié)果大小=50條不必寫入外存關(guān)系數(shù)據(jù)庫系統(tǒng)查詢優(yōu)化(續(xù))②讀Student表索引=讀Student表總塊數(shù)=50/10=5塊讀數(shù)據(jù)時(shí)間③П總時(shí)間<10秒第8章關(guān)系查詢處理與查詢優(yōu)化8.1關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢處理8.2關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢優(yōu)化8.3查詢優(yōu)化的一般準(zhǔn)則8.4代數(shù)優(yōu)化8.5物理優(yōu)化8.6小結(jié)8.3查詢優(yōu)化的一般準(zhǔn)則選擇運(yùn)算應(yīng)盡可能先做目的:減小中間關(guān)系在執(zhí)行連接操作前對(duì)關(guān)系適當(dāng)進(jìn)行預(yù)處理按連接屬性排序在連接屬性上建立索引投影運(yùn)算和選擇運(yùn)算同時(shí)做目的: