資源描述:
《7-第七章:查詢處理與優(yōu)化》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、本講(第七章)簡要說明¢授課目的與要求:掌握數(shù)據(jù)庫查詢處理的步驟、優(yōu)化的必要性、以及優(yōu)化的方法?!槭谡n重點(diǎn):優(yōu)化的必要性、優(yōu)化的主要方法?!樽鳂I(yè)安排:p.2315,8,9,10,14,15第七章查詢處理7.1查詢處理概述查詢是數(shù)據(jù)庫用戶最基本、最常用的操作。非過程化查詢語言把選擇查詢策略、實(shí)現(xiàn)查詢的工作交給DBMS去作。例子:找出學(xué)生CHEN所學(xué)各門課程及其成績。SELECTC-NO,GRADEFROMS,SCWHERES.NAME=‘CHEN’ANDS.S-NO=SC.S-NO1.處理查詢的主要步驟ParserandRelationalal
2、gebraquerytranslatorexpressionπC-NO,GRADEπC-NO,GRADEStatiaticsOptimizerσs.NAME=‘CHEN’σaboutdatas.AME=‘CHEN’∧s.S-NO=sc.S-NOExecutionplan×datadataSSCSSCCodegeneratorEvaluationQueryresultExecutingcodeenginer7.1查詢處理概述2.執(zhí)行方式解釋執(zhí)行的代碼一般不保留,再次執(zhí)行該查詢語句時(shí),需重復(fù)上述1)~4)步。編譯執(zhí)行方式產(chǎn)生的是可執(zhí)行代碼,是與D
3、B狀態(tài)相關(guān)的存儲過程,一般可由運(yùn)行時(shí)數(shù)據(jù)庫處理器反復(fù)使用,不必重復(fù)上述1)~3)步。7.1查詢處理概述3.嵌入式操作語言將DML嵌入一般高級程序語言時(shí),其處理步驟如下:1)對應(yīng)用程序進(jìn)行預(yù)編譯,找出有關(guān)DML語句,將其變?yōu)楹瘮?shù)調(diào)用。2)對二次源程序進(jìn)行編譯連接,生成可執(zhí)行的目標(biāo)程序。3)執(zhí)行目標(biāo)程序。------------------------EXECSQLCALL過程SELECT---------FROM---------WHERE---;------------------7.1查詢處理概述4查詢優(yōu)化的必要性例子:找出學(xué)生CHEN所學(xué)
4、各門課程及其成績。SELECTC-NO,GRADEFROMS,SCWHERES.NAME=‘CHEN’ANDS.S-NO=SC.S-NO系統(tǒng)可以用多種等價(jià)的關(guān)系代數(shù)表達(dá)式去完成,如:T1=π(σ(S×SC))C-NO,GRADES.S-NO∧NAME=‘CHEN’T2=π(σ(SSC))C-NO,GRADENAME=‘CHEN’T3=π(σ(S)SC)C-NO,GRADENAME=‘CHEN’7.1查詢處理概述執(zhí)行時(shí)間分析設(shè)關(guān)系S、SC占用的存儲空間分別為B1、B2塊,緩沖區(qū)為n塊,給S分配n-1塊,SC分配1塊。S(B1塊)SC(B2塊)緩
5、沖區(qū)n-1塊(n塊)1塊---n-1塊1塊7.1查詢處理概述執(zhí)行時(shí)間分析(續(xù))S(B1塊)SC(B2塊)緩沖區(qū)n-1塊(n塊)1塊---n-1塊1塊讀塊次數(shù):T1的=B1+「B1/(n-1)?B2T3的=B1+B2當(dāng)B1=200,B2=800,n=16時(shí):T1的≈200+200/15*800=11400塊T3的≈1000塊review¢處理查詢的主要步驟1.Parserandtranslator2.Optimizer3.Codegenerator4.Evaluationenginer¢執(zhí)行方式¢查詢優(yōu)化的必要性¢“陳姓同學(xué)學(xué)習(xí)各科課程的成績”
6、¢T1需讀一萬個數(shù)據(jù)塊,T3需讀一千塊(3ms/B)1)規(guī)則優(yōu)化,根據(jù)啟發(fā)式規(guī)則,關(guān)系代數(shù)表達(dá)式等價(jià)變換進(jìn)行。2)物理優(yōu)化,根據(jù)數(shù)據(jù)的物理組織、訪問路徑,如排序、索引等進(jìn)行。3)代價(jià)估算優(yōu)化,對每一候選策略進(jìn)行代價(jià)估算,取代價(jià)最小者。7.3.1規(guī)則優(yōu)化(啟發(fā)式方法)(基于關(guān)系代數(shù)的優(yōu)化)¢轉(zhuǎn)換規(guī)則(保持等價(jià))¢什么是好的轉(zhuǎn)換關(guān)系運(yùn)算的性質(zhì)(1)一元運(yùn)算的交換與結(jié)合設(shè)有關(guān)系r[R],框架R的子集X,X的子集Y,僅涉及X中屬性的公式F和僅涉及R中屬性的公式F1,F(xiàn)2。則π(π(r))≡π(r)YXYσ(π(r))≡π(σ(r))FXXFσ(σ(r
7、))≡σ(r)F1F2F1∧F2σ(σ(r))≡σ(σ(r))F1F2F2F1(2)二元運(yùn)算的交換與結(jié)合設(shè)有關(guān)系r[R],s[S],w[W],僅涉及R,S中屬性的公式F,則r∪s≡s∪rr∩s≡s∩rr×s?s×rrs?srFFrs?sr(r∪s)∪w≡r∪(s∪w)(r∩s)∩w≡r∩(s∩w)(r×s)×w≡r×(s×w)(rs)w≡r(sw)(3)一元運(yùn)算對二元運(yùn)算的分配律設(shè)有關(guān)系r[R],s[S],X,Z分別為框架R,S的子集,公式F,F(xiàn)1僅涉及R中的屬性,公式F2僅涉及S中的屬性。則:π(r∪s)≡π(r)∪π(s)XXXσ(r∪s
8、)≡σ(r)∪σ(s)FFFσ(r∩s)≡σ(r)∩σ(s)FFFσ(r-s)≡σ(r)-σ(s)FFFπ(r×s)≡π(r)×π(s)X,ZXZσ(r×s)≡σ(