|
|
Algebraickß optimalizace dotaz∙
Lze bez nadsßzky °φci, ₧e optimalizßtor dotaz∙ tvo°φ nejd∙le₧it∞jÜφ komponentu relaΦnφho S╪BD. V jakΘmkoli databßzovΘm stroji (Φi SQL-serveru) by m∞l p°edstavovat jßdro systΘmu, m∞l by b²t zodpov∞dn² za vybrßnφ vhodnΘ strategie pro vyhodnocenφ dotazu. RelaΦnφ S╪BD je velmi pravd∞podobn∞ tak dobr², jak je dobr² jeho optimalizßtor dotaz∙. Optimalizßtor dotaz∙ je softwarov² modul, kter² transformuje neprocedurßlnφ dotaz do procedurßlnφho plßnu vyhodnocenφ, tak aby zp∙sob vyhodnocenφ byl co nejefektivn∞jÜφ. Pot°eba pro optimalizaci dotaz∙ vznikß jako d∙sledek zßkladnφ filosofie relaΦnφho S╪BD - odd∞lit formulaci u₧ivatelsk²ch po₧adavk∙ od fyzickΘho ulo₧enφ dat. TΘto vlastnosti se takΘ °φkß nezßvislost na fyzick²ch datech. Ka₧d², kdo n∞kdy zkouÜel zapsat dotaz v relaΦnφ algeb°e nebo v SQL, zjistil, ₧e jeden a t²₧ dotaz lze v jazyce formulovat vφce zp∙soby, kterΘ jsou z hlediska v²sledku vyhodnocenφ ekvivalentnφ, avÜak z hlediska efektivnosti vyhodnocenφ jsou zcela r∙znΘ. Optimalizßtor dotaz∙ by m∞l v ideßlnφm p°φpad∞ zajistit, aby vyhodnocenφ dotazu bylo nezßvislΘ na zvolenΘ syntaktickΘ verzi dotazu. Uva₧ujme nap°. dotaz ôNajdi pro kino Prßce re₧isΘry vÜech film∙, kterΘ se v n∞m hrajφö. Tento dotaz lze v SQL zapsat nap°. jako SELECT FILM.REÄIS╔R FROM P╪EDSTAVEN═ X, FILM Y WHERE X.JM╔NO_FILMU = Y.JM╔NO_FILMU AND X.N┴ZEV_KINA=ôPR┴CEö Vyhodnocenφ by mohlo b²t provedeno ve t°ech krocφch: 1. Spoj relace P╪EDSTAVEN═ a FILM p°es atribut JM╔NO_FILMU; 2. Vyber jen ty °ßdky, pro kterΘ N┴ZEV_KINA=ôPR┴CEö; 3. Prove∩ projekci na atribut REÄIS╔R; Jinß a z°ejm∞ efektivn∞jÜφ varianta plßnu vyhodnocenφ by nejprve provedla selekci °ßdk∙ relace P╪EDSTAVEN═ a teprve pak operaci spojenφ s relacφ FILM, tj. uplatnila by se zßsada "zmenÜi p°ed operacφ spojenφ co mo₧nß nejvφce relace-operandy". K tomu je t°eba mφt k dispozici soustavu pravidel, kterΘ umo₧≥ujφ nahradit jeden v²raz relaΦnφ algebry jin²m, ekvivalentnφm. Postupu se pak °φkß algebraickß optimalizace. Prakticky se provßdφ transformacemi strom∙ dotazu. V t∞chto stromech jsou v listech zßkladnφ relace, ostatnφ uzly jsou dßny operacemi relaΦnφ algebry. Na obrßzku 1 jsou stromy uva₧ovanΘho dotaz (p∙vodnφ a optimalizovanß verze). [ REÄIS╔R]
N┴ZEV_KINA=ôPR┴CEö [ REÄIS╔R]
* N┴ZEV_KINA=ôPR┴CEö FILM P╪EDSTAVEN═ FILM P╪EDSTAVEN═ Obr. 1: Dotaz p°ed a po transformaci Optimalizace m∙₧e ovÜem b²t provßd∞na podle dalÜφch princip∙, nap°. v zßvislosti na velikosti relacφ, velikosti aktußlnφ domΘny danΘho atributu apod. Jeli jedna relace dostateΦn∞ malß, je ji mo₧nΘ naΦφst do vnit°nφ pam∞ti, co₧ znaΦn∞ zjednoduÜφ algoritmy spojenφ. V²znamnou roli m∙₧e hrßt existence indexu pro n∞kter² z atribut∙, nebo set°φd∞nφ relace. Na zßklad∞ vybranΘ strategie se urΦuje i velikost pot°ebnΘ vnit°nφ pam∞ti, nebo naopak velikost pam∞ti ovliv≥uje v²b∞r strategie. Obecn∞ lze v²b∞r optimßlnφ strategie chßpat jako optimalizaci pomocφ jistΘ cenovΘ funkce. Uva₧ujme dotazovacφ jazyk SQL. Pak zpracovßnφ m∙₧e vypadat tak, jak ukazuje obrßzek 2. dotaz v SQL
kontrola syntaxe
syntakticky sprßvn² dotaz
sΘmantickß kontrola
sΘmanticky sprßvn² dotaz
transformace
dotaz v relaΦnφ algeb°e
optimalizace v relaΦnφ algeb°e
optimalizovan² dotaz v relaΦnφ algeb°e
v²b∞r strategie
provßd∞cφ plßn vyhodnocenφ
generovßnφ k≤du
program dotazu Obr.2: Proces vyhodnocenφ dotazu Zφskanφ ekvivalentnφho v²razu relaΦnφ algebry je umo₧n∞no platnostφ n∞kter²ch zßkon∙ vypl²vajφcφch z definice relaΦnφch operacφ. Pomocφ [q ] budeme oznaΦovat q -spojenφ (kde q je n∞jakΘ porovnßnφ), zßpis E1 » E2 oznaΦuje, ₧e v²razy relaΦnφ algebry E1 a E2 jsou ekvivalentnφ. Platφ nßsledujφcφ zßkony: (1) Komutativita spojenφ a kartΘzskΘho souΦinu E1 [q ] E2 » E2 [q ] E1 E1 * E2 » E2 * E1 E1 ´ E2 » E2 ´ E1 (2) Asociativita spojenφ a kartΘzskΘho souΦinu (E1 [q 1] E2) [q 2] E3 » E1 [q 1] (E2 [q 2] E3) (E1 * E2) * E3 » E1 * (E2 * E3) (E1 ´ E2) ´ E3 » E1 ´ (E2 ´ E3) Proto₧e se pomocφ operace spojenφ spojujφ takovΘ n-tice relacφ, kterΘ majφ spoleΦnou hodnotu danΘho atributu, umo₧≥uje asociativita a komutativita hledat v p°φpad∞ n∞kolika spojenφ relacφ takovΘ po°adφ operacφ, aby meziv²sledky byly co nejmenÜφ, tj. aby se co nejvφce redukoval poΦet p°φstup∙ na disk. Strategii optimalizace uvedenou v p°φkladu umo₧≥ujφ pravidla, kde projekce odstranφ zbyteΦnΘ atributy, selekce redukujφ poΦet n-tic relacφ. (3) Komutativita selekce a projekce Jsou-li vÜechny atributy z formule j selekce v mno₧in∞ atribut∙ {A1,...,Ak}, pak E1[A1,...,Ak](j ) » E1(j )[A1,...,Ak] Nejsou-li B1,...,Bs ve j , pak E1(j )[A1,...,Ak] » E1[A1,...,AkB1...Bs](j )[ A1,...,Ak] Propagaci selekce k (zßkladnφm) relacφm lze pou₧φt i u operacφ sjednocenφ, rozdφl a kartΘzsk² souΦin. (4) Komutativita selekce a kartΘzskΘho souΦinu Jestli₧e vÜechny atributy ve j jsou souΦasn∞ v E1, pak (E1 ´ E2)( j ) » E1(j ) ´ E2 (5) Komutativita selekce a sjednocenφ (E1 È E2)(j ) » E1(j ) È E2(j )´ (6) Komutativita selekce a rozdφlu (E1 - E2)( j ) » E1(j ) - E2(j ) Podobn∞ lze pou₧φt i projekci. (7) Komutativita projekce a kartΘzskΘho souΦinu (E1 ´ E2)[A1,...,Ak] » E1[B1...Bk] ´ E2[C1...Cm] kde sjednocenφ atribut∙ v projekcφch na pravΘ stran∞ je rovno mno₧in∞ atribut∙ projekce na levΘ stran∞, Bi se t²kajφ E1 a Cj se t²kajφ E2. (8) Komutativita projekce a sjednocenφ (E1 È E2)[A1,...,An] » E1[A1,...,An] È E2[A1,...,An] Dßle lze nap°. selekci rozd∞lit ve dv∞, je-li j konjunkcφ. Tomuto procesu se °φkß vytvß°enφ kaskßd selekcφ. Podobn∞ lze vytvß°et i kaskßdy projekcφ. P°i optimalizaci se ale pravidla obvykle pou₧φvajφ pouze v jednom, v²hodnΘm sm∞ru, tj. ruÜφ se kaskßdy. P°i optimalizaci dotaz∙ pomohou tedy pravidla, kterß mohou produkovat dobrΘ v²sledky, ale kterß ne v₧dy zaruΦujφ nejlepÜφ °eÜenφ. Zßkladnφ strategiφ je omezit velikosti meziv²sledk∙ operacemi selekce a projekce jak jen je mo₧nΘ. Tyto heuristiky lze shrnout nap°. do nßsledujφcφch 6 pravidel: 1. Prove∩ selekce co nejd°φve. Je-li to mo₧nΘ, pou₧ij kaskßd selekcφ, komutativity selekce s projekcemi a kartΘzsk²mi souΦiny, distributivnosti selekce nad mno₧inov²mi operacemi s cφlem dostat selekci ve stromu dotazu co nejnφ₧e k list∙m. 2. Prove∩ projekce co nejd°φve. Je-li to mo₧nΘ, pou₧ij kaskßd projekcφ, distributivity projekcφ nad kartΘzsk²m souΦinem a ostatnφmi mno₧inov²mi operacemi, komutativity selekce a projekce s cφlem dostat projekci ve stromu dotazu co nejnφ₧e k list∙m. VyzkouÜej, zdali n∞kterΘ projekce nejsou zbyteΦnΘ. 3. Jestli₧e se jako argument selekce vyskytuje kartΘzsk² souΦin a selekce zahrnuje atributy obou relacφ, transformuj kartΘzsk² souΦin na spojenφ. Zahrnuje-li selekce atribut pouze jednΘ z relacφ, aplikuj selekci nejd°φve na ni. 4. Jestli₧e je dßna posloupnost selekcφ a/nebo projekcφ, pou₧ij kombinaci komutativity a nahrazenφ kaskßdy selekcφ nebo projekcφ jednou selekcφ a jednou projekcφ v po°adφ selekce nßsledovanß projekcφ a aplikuj je souΦasn∞ na ka₧dou vybranou n-tici. Jestli₧e je operace spojenφ nebo kartΘzsk² souΦin nßsledovßna posloupnosti selekcφ nebo projekcφ, aplikuj je v okam₧iku, kdy jsou n-tice spojenφ Φi kartΘzskΘho souΦinu generovßny. 5. Pou₧ij asociativity spojenφ, kartΘzskΘho souΦinu, sjednocenφ a pr∙niku k p°eskupenφ v∞tvφ stromu dotazu tak, ₧e selekΦnφ operace, kterß produkuje menÜφ relaci, bude volßna nejd°φve. 6. Jestli₧e se n∞jak² podv²raz vyskytuje vφcekrßt ve stromu dotazu a v²sledek, kter² produkuje nenφ p°φliÜ velk², spoΦφtej ho jednou do pomocnΘ relace. To je vhodnΘ nap°. u dotaz∙ na pohled (view v SQL), kde stejn² podv²raz musφ b²t pou₧it pro konstrukci pohledu poka₧dΘ. VÜimn∞te si, ₧e pravidlo 5 vy₧aduje jistou znalost o relaci odpovφdajφcφ v²sledku. Tu lze odvodit z jist²ch kvantitativnφch charakteristik relace obsa₧en²ch v tzv. profilu relace. Nejvφce v²sledk∙, jak optimalizovat, existuje pro t°φdu jednoduch²ch dotaz∙. Jsou to ty dotazy, kterΘ se dajφ vyjßd°it pomocφ spojenφ, selekcφ a projekcφ. Algebraickß optimalizace nahrazuje jistΘ shluky operacφ jin²m shlukem operacφ (lokßlnφ optimalizace). JednoduchΘ dotazy lze ale optimalizovat i globßln∞ a to ve smyslu minimalizace poΦtu spojenφ (technika tabl≤). P°esto₧e jde o °eÜenφ obecn∞ Φasov∞ nßroΦnΘ vzhledem k dΘlce dotazu, jsou v²sledky pou₧itelnΘ, proto₧e v²razy dotaz∙ majφ "rozumnou" dΘlku. Uva₧ujme nap°. R(ABC) a dotaz R(B=5)[ B,A] * (R[ A,B] * (R(B=5)[ A,C] ))[ B,C] . Pomocφ techniky tabl≤ lze dotaz °eÜit pomocφ jednoho spojenφ jako R(B=5)[ B,A] * R(B=5)[ B,C] . Ukß₧eme v pokraΦovßnφch DatabßzovΘ abecedy dalÜφ triky, jak optimalizovat. Pon∞kud pesimistick² je ovÜem dneÜnφ nßzor teoretik∙, ₧e optimalizace v podstat∞ vyΦerpala svΘ mo₧nosti, tj. slo₧it∞jÜφ v²poΦet cenovΘ funkce m∙₧e p°esßhnout ·nosnou mez. Tak₧e op∞t - i optimalizaci je t°eba sv∞°it paralelismu. <seznam dφl∙ serißlu> <COMPUTERWORLD> |