otimizador de consulta sql
Post on 02-Jun-2018
225 Views
Preview:
TRANSCRIPT
-
8/10/2019 Otimizador de consulta SQL
1/109
-
8/10/2019 Otimizador de consulta SQL
2/109
UNIVERSIDADE FEDERAL DO ESPIRITO SANTO
CENTRO TECNOLGICO
MONOGRAFIA DE GRADUAO
Fernanda Rigamont Gomes
Otimizador de Consulta do CoDIMS
VITRIA/ES
2!"
-
8/10/2019 Otimizador de consulta SQL
3/109
-
8/10/2019 Otimizador de consulta SQL
4/109
Fernanda Rigamont Gomes
Otimizador de Consulta do CoDIMS
Monogra#ia a$resentada %omo e&ig'n%ia $ar%ial $ara a o(ten)*o de t+tulo de ,a%-arel emCi'n%ia da Com$uta)*o . ni0ersidade Federal do Es$+rito Santo1 na rea de
%on%entra)*o Sistema de In#orma)*o1 so( a orienta)*o do 3ro#" Dr" Al0aro Cesar 3ereira
,ar(osa
Comisso Examinadora
3ro#" Dr" Al0aro Cesar 3ereira ,ar(osa
DI/ FES
Orientador
3ro#" Dr" 5os6 Gon)al0es 3ereira Fil-o
DI/FES
77777777777777777777777777777777777777777777777777777
3ro#" Ms% Cristiano ,ian%ardi
DI/FES
2
-
8/10/2019 Otimizador de consulta SQL
5/109
Agrade%imentos
A Deus1 $or me dar #or)a $ara su$erar os momentos di#+%eis e $elas %on8uistas realizadas"
A meus $ais1 Altair e Ira%ema1 $elo in%enti0o 8ue sem$re me deram $ara $rosseguir e
realizar os meus son-os"
A min-a #am+lia $elo amor e $elos e&em$los de 0ida 8ue me d*o"
Ao meu orientador 3ro#" Al0aro Cesar 3ereira ,ar(osa $elos %on-e%imentos
%om$artil-ados $ara a realiza)*o deste tra(al-o"
Ao $ro#essores do DI $elo %on-e%imento re%e(ido1 e aos #un%ionrios do DI $elos tra(al-os
realizados 8ue s*o de grande im$ort9n%ia"
Aos meus amigos $elos 0rios in%enti0os 8ue me deram e a todas as $essoas 8ue de uma
#orma direta ou indiretamente me a:udaram a %on%luir este tra(al-o"
;
-
8/10/2019 Otimizador de consulta SQL
6/109
SUMRIO!" In#rod$%o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'
"&" Con#(x#o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'
!"&) O*+(#i,o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&-
!"&. M(#odo/o0ia U#i/i1ada&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&-
"&2 Or0ani1a%o do #ra*a/3o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"!
) Con4(i#os&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"")& " Pro4(ssam(n#o d( Cons$/#a&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&""
!)&) Trans5orma%o da 4ons$/#a 6ara a /0(*ra R(/a4iona/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"2
)&. /0(*ra R(/a4iona/ &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"2
)&.&" E7$i,a/8n4ia na /0(*ra R(/a4iona/&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"9
)&.&) O6(rador(s A/0:*ri4os L;0i4os ( F&) Ti6os d( O#imi1a%o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&)2
)&9 En$m(ra%o d( P/anos F&) Pro4(ssam(n#o da Cons$/#a do Caso d( Uso&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&9"
>&. Gra5o d( Cons$/#a&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&9)
-
8/10/2019 Otimizador de consulta SQL
7/109
>&2 P/anos G(rados 6(/o O#imi1ador&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&92
>&> C/4$/o do C$s#o&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&9=
>&9 PEC&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'!
>&' F(rram(n#as U#i/i1adas&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&')
9 Con4/$s?(s&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'.
9&" R(s$/#ados&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'.
9&) Con#ri*$i%?(s ao CoDIMS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'.
9&. Di5i4$/dad(s En4on#radas&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'2
9&2 Tra*a/3os F$#$ros&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'2
R(5(r8n4ias Bi*/io0r5i4as&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'9
A68ndi4( C/ass(s &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&''
!
-
8/10/2019 Otimizador de consulta SQL
8/109
R(s$moO CoDIMS =Configurable Data Integration Middleware System> ?,AR,OSA1 24@ tem
%omo o(:eti0o $ro0er a%esso integrado a dados distri(u+dos e -eterog'neos1 de #orma trans$arente1
a$resentando uma ni%a 0is*o -omog'nea destes dados" B um am(iente #le&+0el e %on#igur0el 8ue
$ermite gerar sistemas de integra)*o de dados %on#igurados $ara uma a$li%a)*o es$e%+#i%a"
O CoDIMS %onsiste em uma ar8uitetura #+si%a di0idida em %om$onentes 8ue dis$oni(ilizamser0i)os es$e%+#i%os de integra)*o de dados denominados DIMS =Data Integration Middleware
Services>" Esses %om$onentes s*o web-services (aseados nas #un%ionalidades de sistemas de
ger'n%ia de (an%o de dados e $ossuem a %ara%ter+sti%a de seremplug and play1 #orne%endo assim
um alto n+0el de intero$era(ilidade1 %om$osi)*o e a(stra)*o da sua im$lementa)*o e da #orma de
%omuni%a)*o 8ue utilizam"
3ara a %ontinuidade do $ro%esso de desen0ol0imento do CoDIMS tornase ne%essrio o
$ro:eto e desen0ol0imento de seus %om$onentes e dos res$e%ti0os ser0i)os DIMS" m dos ser0i)os
a serem desen0ol0idos e in%or$orados ao %om$onente 3ro%essamento de Consulta do CoDIMS 6 ode Otimiza)*o de Consulta1 o(:eti0o deste tra(al-o"
-
8/10/2019 Otimizador de consulta SQL
9/109
" In#rod$%o
"&" Con#(x#o
o:e em dia - uma grande 8uantidade de sistemas de in#orma)*o dis$on+0eis nas
organiza)es do mundo inteiro1 %ara%terizando a e&ist'n%ia de dados -eterog'neos1 distri
(u+dos e autnomos" Dados -eterog'neos s*o dados 8ue s*o o(tidos atra06s de sistemas
8ue #oram desen0ol0idos inde$endentes e %om isso os dados $ossuem1 #re8Hentemente1 es
truturas e terminologias di#erentes =-eterogeneidade estrutural e sem9nti%a1 res$e%ti0amen
te> =IMJ SEO1 4KK4J 3ITORAJ ,RESJ ELMAGARMID1 4KK!J RAMJ ,ERS
TEI1 24> o 8ue o%orre tanto 8uando os es8uemas 0'm de dom+nios di#erentes1 %omo
8uando eles modelam o mesmo dom+nio do mundo real" Como e&em$lo de -eterogeneida
de sem9nti%a temos o %am$o se&o 8ue $ode ser de#inido %om F $ara #eminino e M $ara
mas%ulino e um outro modo de de#inir esses mesmos %am$os 6 de#inir 4 $ara #eminino e
$ara mas%ulino" Dados distri(u+dos s*o os dados 8ue se en%ontram armazenados em #ontes
de dados 8ue est*o situadas geogra#i%amente em lo%ais di#erentes1 sendo interligadas atra
06s de uma rede" E autonomia se re#ere .s #ontes $ossu+rem %ontrole so(re os seus dados e1
em geral1 n*o a%eitam modi#i%a)es e&ternas"
O desen0ol0imento de Sistemas de Integra)*o de Dados tem se mostrado %ada 0ezmais im$ortante e ne%essrio" O o(:eti0o desses sistemas 6 li(erar o usurio de ter de
lo%alizar as #ontes de dados1 interagir %om %ada uma isoladamente e %om(inar/integrar os
dados manualmente"
Integra)*o de dados -eterog'neos 6 uma rea %riti%amente im$ortante e 0em sendo
#ortemente $es8uisada" As $ro$ostas/solu)es e&istentes ?SILVESTREJ ,IACARDIJ
,AR,OSA1 2 6 um am(iente
#le&+0el e %on#igur0el $ara gerar sistemas middleware de integra)*o de dados1 (aseado no
uso de #rameNors e %om$onentes1 $ermitindo gerar sistemas %on#igurados $ara integra)*o
-
8/10/2019 Otimizador de consulta SQL
10/109
de dados -eterog'neos e distri(u+dos do ti$o lightweight: a$enas os %om$onentes
ne%essrios estar*o $resentes em uma %erta %on#igura)*o" O $ro%esso de %on#igura)*o 6
%entrado na %on#igura)*o #+si%a e na %on#igura)*o lPgi%a" A %on#igura)*o #+si%a 6 a es%ol-a
e de%lara)*o de um %on:unto de %om$onentes 8ue dis$oni(ilizam ser0i)os middlewarede
integra)*o de dados denominados DIMS =Data Integration Middleware Services>" Esses
%om$onentes s*o (aseados nos ser0i)os de sistemas geren%iadores de (an%o de dados1 e
$ossuem a %ara%ter+sti%a de serem plug and play1 #orne%endo assim um alto n+0el de
intero$era(ilidade1 %om$osi)*o e a(stra)*o da sua im$lementa)*o e da #orma de
%omuni%a)*o 8ue utilizam" Al6m disso1 os %om$onentes s*oframeworks8ue $odem ser1
ent*o1 instan%iados de a%ordo %om a ne%essidade da a$li%a)*o" a 0ers*o atual do CoDIMS
os %om$onentes s*o im$lementados %omo web-services?TREVISOL1 2
-
8/10/2019 Otimizador de consulta SQL
11/109
3ara a %ontinuidade do $ro%esso de desen0ol0imento do CoDIMS tornase ne%essrio
o $ro:eto e im$lementa)*o de seus %om$onentes e dos res$e%ti0os ser0i)os DIMS" este
$ro%esso 6 im$ortante ter sem$re em mente as %ara%ter+sti%as de %on#igura)*o e
#le&i(ilidade do CoDIMS1 ou se:a1 os %om$onentes desen0ol0idos de0em ir ao en%ontro
destas %ara%ter+sti%as"
O %om$onente Metadados #oi de#inido em ?SILVESTRE12!@" O %om$onente de
A%esso aos Dados #oi estudado em ?,IACARDI1 2!@ e ?COCO1 2!@"
3ara o %om$onente 3ro%essamento de Consulta1 a M8uina de E&e%u)*o de Consulta
=MEC> : #oi o(:eti0o de outro tra(al-o re%ente ?3IEIRO1 2
-
8/10/2019 Otimizador de consulta SQL
12/109
"&2 Or0ani1a%o do #ra*a/3o
Esse tra(al-o est organizado da seguinte maneiraQ
O Ca$+tulo 2 %ont6m %on%eitos1 #undamentos de otimiza)*o1 $rin%+$ios (si%os de
otimiza)*o1 lge(ra rela%ional1 e8ui0al'n%ia na lge(ra rela%ional e algoritmos de
otimiza)*o 8ue s*o usados $elos otimizadores"
o %a$+tulo ; 6 a$resentado o $ro%essamento de %onsulta em sistemas de integra)*o
de dados"
O %a$+tulo < $ossui uma (re0e a$resenta)*o do am(iente CoDIMS en#o%ando suas
%ara%ter+sti%as $rin%i$ais1 %omo o otimizador #un%iona dentro do am(iente do CoDIMS1 os
diagramas de %lasse1 o diagrama de se8H'n%ia e a inter#a%e do otimizador"
O %a$+tulo ! a$resenta a im$lementa)*o de um $rotPti$o"O %a$+tulo %ont6m as %on%luses e as %onsidera)es #inais so(re o tra(al-o"
-
8/10/2019 Otimizador de consulta SQL
13/109
) Con4(i#os
)& " Pro4(ssam(n#o d( Cons$/#a
A dis$oni(ilidade de linguagens n*o$ro%edurais1 %omo o SL1 mel-ora de #orma
signi#i%ati0a o desen0ol0imento de a$li%ati0os e a $roduti0idade do usurio #inal" As
linguagens de (an%o de dados rela%ionais $ermitem realizar %onsultas %om$le&as de modo
%on%iso e sim$les" Em $arti%ular1 $ara %onstruir a res$osta . %onsulta1 o usurio n*o $re%isa
es$e%i#i%ar e&atamente o $ro%edimento a ser seguido" Esse $ro%edimento 6 na realidade
determinado $or um mPdulo do SG,D =Sistema de Geren%iamento de (an%o de Dados>1 em
geral %-amado de $ro%essador de %onsulta ?SIL,ERSCAT1 24@"
O $ro%essamento de %onsulta %onsiste nas ati0idades 8ue en0ol0em a%essar dados de
um (an%o de dados"As %onsultas #eitas em linguagens de alto n+0el1 tal %omo o SL1 s*o
ade8uadas $ara o uso -umano1 $or6m n*o s*o ade8uadas $ara o $ro%essador de %onsulta1
$ois n*o a$resentam um $ro%edimento a ser seguido e nem uma estrat6gia e#i%iente $ara o
a%esso ao dis%o ?SIL,ERSCAT1 24@"
O %usto de se $ro%essar uma %onsulta 6 determinado $ela 8uantidade de a%esso a
dis%o 8ue a %onsulta $re%isa #azer1 $ois esse ti$o de a%esso 6 muito lento 8uando %om$arado
%om o a%esso . memPria" 3ara se $ro%essar uma %onsulta - 0arias estrat6gias1 algumas
(oas e outras ruins" Assim1 sistemas de (an%o de dados de0em $ossuir um $ro%edimento de
otimiza)*o de %onsulta1 0isando . es%ol-a da estrat6gia 8ue e&e%ute a %onsulta em um
menor tem$o e usando menos re%ursos" A$esar do $ro%edimento de otimiza)*o demandar
uma 8uantidade de tem$o $ara ser realizado1 ainda assim1 na m6dia1 o otimizador o(t6m
mel-ores resultados"
Assim1 tal %omo os SG,Ds1 os sistemas de integra)*o de dados de0em #azer $ro0eito
dos re%ursos da otimiza)*o da %onsulta"ma %onsulta #eita em uma linguagem de alto n+0el1 $assa $or 0rias eta$as durante o
$ro%essamento da %onsulta" Con#orme mostrado a(ai&o na #igura 2"
-
8/10/2019 Otimizador de consulta SQL
14/109
As eta$as do 3ro%essamento da Consulta t'm as seguintes #un%ionalidadesQ
Ana/isadorQ Realiza a anlise l6&i%a e sintti%a da %onsulta" a anlise l6&i%a s*o
analisados os dados de entrada1 os s+m(olos da linguagem e se eles est*o sendo usados
%on#orme as regras sintti%as da linguagem =gramti%a>"
3arser=Analisador>
Linguagem de Consulta =SL>
Forma intermediria da %onsulta=gra#o de %onsulta>
Otimizador
3ro%essador de %onsulta=MEC>
3lano de E&e%u)*o da Consulta=3EC>
Resultado da %onsulta
Fi0$ra ) E#a6as d( Pro4(ssam(n#o da Cons$/#a&
-
8/10/2019 Otimizador de consulta SQL
15/109
a anlise sintti%a s*o 0eri#i%ados se todos os nomes de atri(utos e suas rela)es s*o
0lidos e semanti%amente signi#i%ati0os no es8uema do (an%o de dados es$e%+#i%o 8ue est
sendo %onsultado"
Se a %onsulta esti0er #ormulada %orretamente1 6 #eita a tradu)*o da mesma em uma
#orma interna mais a$ro$riada $ara o %om$ilador1 traduzindo a %onsulta $ara a lge(ra
rela%ional ou em algo e8ui0alente1 em #orma de uma r0ore de %onsulta =tam(6m $ode ser
re$resentado $or um gra#o de %onsulta>"
O#imi1adorQ O o(:eti0o do otimizador de %onsulta 6 es%ol-er a mel-or estrat6gia de
e&e%u)*o da %onsulta1 atra06s de modi#i%a)es nas e&$resses alg6(ri%as o(tendo
e&$resses e8ui0alentes1 $or6m %om %ustos di#erentes" As trans#orma)es s*o (aseadas em
$ro$riedades alg6(ri%as1 %omo a transiti0idade de o$eradores na sele)*o de algoritmos $ara
a im$lementa)*o" As e&$resses alg6(ri%as e8ui0alentes $odem gerar um grande nmero de
$lanos e $ara 8ue o $ro%esso de otimiza)*o n*o #i8ue in0i0el alguns otimizadores usam
-eur+sti%as $ara es%ol-er o mel-orU $lano" Com (ase nos %ustos dos $lanos 8ue #oram
gerados o otimizador es%ol-e o $lano 8ue ten-a o menor %usto de a%ordo %om o modelo de
%usto esta(ele%ido"
De$ois do $lano es%ol-ido1 o otimizador gera o 3EC =3lano de E&e%u)*o de
Consulta> e en0iao $ara o 3ro%essador de Consulta"
Pro4(ssador d( Cons$/#aQ Re%e(e o 3EC do Otimizador e e&e%uta o %Pdigo da %onsulta1
no modo %om$ilado ou inter$retado $ara $roduzir o resultado" O $ro%essador de %onsulta
tam(6m 6 %-amado de MEC = M8uina de E&e%u)*o de Consulta>"
A %onsulta $assa $elos dois $rimeiros $assos somente uma 0ez1 8uando est sendo
%om$ilada" O 3EC 6 en0iado $ara ser e&e%utado $ela MEC sem$re 8ue #or e&e%utada a
%onsulta es$e%+#i%a"
m e&em$lo destas eta$as de $ro%essamento de %onsulta 6 a$resentado na se)*o ;"2
nas $ginas ;; e ;< deste tra(al-o"
-
8/10/2019 Otimizador de consulta SQL
16/109
)&) Trans5orma%o da 4ons$/#a 6ara a /0(*raR(/a4iona/
3ara 8ue a MEC $ossa e&e%utar a %onsulta1 a mesma de0e est %on0ertida em uma
re$resenta)*o interna1 8ue elimina as %onsidera)es da %amada e&terna e $re$ara o %amin-o
$ara o estgio da otimiza)*o"
Em geral1 as %onsultas em SL s*o de%om$ostas em (lo%os de %onsultas1 8ue #ormam
as unidades (si%as 8ue $odem ser traduzidas $elos o$eradores alg6(ri%os e ent*o
otimizadas" m (lo%o de %onsulta %ont6m uma ni%a e&$ress*o SELECTFROMERE1
(em %omo %lusulas GRO3 ,W e AVIG" 3ortanto1 su(%onsultas dentro de %onsulta
s*o identi#i%adas %omo (lo%o de %onsulta em se$arado"
a eta$a de otimiza)*o 6 es%ol-ido um $lano de e&e%u)*o $ara %ada (lo%o de%onsulta" A #orma interna ti$i%amente es%ol-ida 6 a de algum ti$o de r0ore de %onsulta ou
gra#o de %onsulta"
m gra#o $ode ser 0isto %omo uma re$resenta)*o de um #ormalismo" Assumindo 8ue
o #ormalismo adotado se:a a lge(ra rela%ional1 a re$resenta)*o interna da r0ore 6 a
$rP$ria e&$ress*o alg6(ri%a"
A lge(ra rela%ional $ermite 8ue uma mesma %onsulta se:a re$resentada de 0rias
#ormas distintas" O desem$en-o de uma %onsulta de0e ser inde$endente da #orma %omo o
usurio a es%re0eu"
)&. /0(*ra R(/a4iona/
A lge(ra rela%ional 6 uma linguagem de %onsulta $ro%edural1 8ue %onsiste em um
%on:unto de o$era)es tendo %omo entrada uma ou duas rela)es e $roduzindo1 %omo
resultado1 uma no0a rela)*o ?SIL,ERSCAT1 24@" A lge(ra rela%ional #oi $ro$osta
$or ?CODD1 4KX@"
As o$era)es #undamentais da lge(ra s*oQ Sele)*o1 3ro:e)*o1 ni*o1 Di#eren)a1
3roduto Cartesiano1 5un)*o atural1 5un)*o Y e Renomear1 sendo (aseadas na teoria de
%on:unto da matemti%a"
-
8/10/2019 Otimizador de consulta SQL
17/109
A o$era)*o Sele)*osele%iona tu$las 8ue satis#a)am a um determinado $redi%ado" A
o$era)*o sele)*o 6 re$resentada $ela letra grega mins%ula sigma =Z> o $redi%ado
=%ondi)*o> a$are%e su(s%rito" As %ondi)es $odem ser %riadas utilizando as %om$ara)es
tais %omo [1 \1 ] 1 ]1 ^1 ^1 e $odem ser %om(inados 0rios $redi%ados em um grande
$redi%ado usando os %one%ti0os lPgi%os e => e ou =U>"
A o$era)*o de 3ro:e)*o determina 8uais atri(utos s*o ne%essrios $ara a e&e%u)*o da
%onsulta1 e&%luindo os desne%essrios" B re$resentada $ela letra grega pi => e seus
atri(utos s*o su(s%ritos" A o$era)*o de $ro:e)*o elimina os elementos du$li%ados"
A o$era)*o ni*o #az a :un)*o de dois %on:untos" B $re%iso 8ue estes dois %on:untos
se:am %om$at+0eis" 3ara 8ue uma rela)*o de uni*o1 $or e&em$lo1 r U s se:a 0lida 6
ne%essrio 8ue duas %ondi)es se:am satis#eitasQ
4" As rela)es r e s de0em $ossuir o mesmo nmero de atri(utosJ2" O dom+nio do i6simo atri(uto de r e o i6simo atri(uto de s de0em ser os mesmos
$ara todo i"
A o$era)*o de Di#eren)a denotada $elo s+m(olo menos = _> $ermite en%ontrar as
tu$las 8ue est*o em uma rela)*o e 8ue n*o est*o na outra"
A o$era)*o de 3roduto Cartesiano re$resentada $or = & > $ermite a %om(ina)*o de
duas rela)es 8uais8uer" A %om(ina)*o dos elementos de %ada rela)*o resulta em um
%on:unto onde %ada tu$la de uma rela)*o #oi %om(inada %om todas as tu$las da outra
rela)*o" O taman-o do %on:unto resultante1 em lin-as1 6 dado $elo nmero de tu$las
e&istente em uma rela)*o multi$li%ada $elo nmero de tu$las da outra rela)*o1 em %oluna 6
dado $ela soma dos atri(utos de uma rea)*o $elo da outra rela)*o"
A o$era)*o de 5un)*o atural sim$li#i%a %ertas %onsultas 8ue e&igem $roduto
%artesiano" Ela in%or$ora as o$era)es de $roduto %artesiano e sele)*o" O $roduto
%artesiano 6 #eito utilizando o %rit6rio de e8ui0al'n%ia entre os atri(utos 8ue e&istem nas
duas rela)es" A$Ps o $roduto %artesiano remo0emse os atri(utos du$li%ados" A o$era)*o
de 5un)*o Y realiza o 3roduto Cartesiano seguido de uma sele)*o1 onde a %ondi)*o de
sele)*o 6 8ual8uer"
A o$era)*o de Renomear $ermite dar outro nome $ara uma rela)*o" B re$resentado
$ela letra grega rho=>"
-
8/10/2019 Otimizador de consulta SQL
18/109
)&.&" E7$i,a/8n4ia na /0(*ra R(/a4iona/
Com o uso das regras de e8ui0al'n%ia 6 $oss+0el gerar 0arias e8ua)es e8ui0alentes
$ara uma mesma %onsulta" Essa gera)*o de regras de e8ui0al'n%ia 6 %ara1 tanto em termos
de tem$o e de es$a)o"
Duas e&$resses s*o e8ui0alentes 8uando elas $reser0am a e8ui0al'n%ia1 ou se:a1 as
rela)es geradas $elas duas e&$resses t'm o mesmo %on:unto de atri(utos e %ont'm o
mesmo %on:unto de tu$las1 em(ora seus atri(utos $ossam estar ordenados em ordem
di#erente"
S*o a$resentadas a(ai&o algumas regras de e8ui0al'n%ia em e&$resses na lge(ra
rela%ional1 %on#orme ?SIL,ERSCAT1 24@" Ser*o usados Y1 Y41 Y2e assim $or diante
$ara denotar $redi%ados e L41L21 L;e assim $or diante $ara denotar listas de atri(utos e E41
E21 E;e assim $or diante $ar denotar e&$resses da lge(ra rela%ional"
Cas4a#aQ Sele)es %on:unti0as $odem ser 8ue(radas em uma se8H'n%ia de sele)es
indi0iduais"
Y4 ` Y2 =E> [ Y4=Y2=E>>
As s(/(%?(s so 4om$#a#i,as
Y4 =Y2 =E>> [ Y2=Y4=E>>
Cas4a#a IIQ As $ro:e)es intermedirias de uma se8H'n%ia de o$era)es de $ro:e)es
$odem ser omitidas"
L1(L2( ... (Ln(E) ...)) = L1(E)
S(/(%o 6od( s(r 4om*inada 4om Prod$#o Car#(siano ( H$n%?(s
o Y=E4& E2> [ E4Y E2
o Y4=E4Y4E2> [ E4Y4 ` Y2 E2
H$n%?(s na#$rais so asso4ia#i,as
=E4 E2> E;[ =E4 =E2 E;>
A %omutati0idade e a asso%iati0idade de o$era)es de :un)es s*o im$ortantes na
otimiza)*o de %onsultas $ara a reordena)*o de :un)es" A maioria dos otimizadores de
-
8/10/2019 Otimizador de consulta SQL
19/109
%onsulta usa uma (oa ordena)*o de o$era)es de :un)es1 ou se:a1 a ordem das :un)es1
$ara reduzir o taman-o dos resultados intermedirios"
As o6(ra%?(s d( s(/(%o 6od(m s(r a#ri*$ [ L4 L2==L4 L;= E4 >> Y = L2 L< =E2>>
As o$era)es de %on:unto uni*o e interse)*o s*o %omutati0as"
E4 E2[ E2 E4
E4E2[ E2E4
A di#eren)a de %on:unto n*o 6 %omutati0a
A uni*o e a interse)*o de %on:untos s*o asso%iati0as
= E4 E2 > E;[ E4 = E2 E;>= E4E2> E; [ E4= E4E;>
A o$era)*o de sele)*o 6 distri(u+da $or meio das o$era)es de uni*o1 interse)*o e
di#eren)a de %on:untos"
Z$@ E" E) J Z$=E4> _ E2[ Z$=E4> Z$=E2>
-
8/10/2019 Otimizador de consulta SQL
20/109
A o$era)*o de $ro:e)*o 6 distri(u+da $or meio da o$era)*o de uni*o
L=E4 E2> [ = L=E4 >> =L=E2>>
)&.&)O6(rador(s A/0:*ri4os L;0i4os ( F
-
8/10/2019 Otimizador de consulta SQL
21/109
A :un)*o de la)o anin-ado 6 uma das #ormas mais sim$les de e&e%utar a :un)*o
natural de duas rela)es" A :un)*o das rela)es %om esse o$erador 6 #eita %om(inando todas
as tu$las de uma rela)*o %om todas as tu$las da segunda rela)*o" Se:am as rela)es R e S1 a
%om(ina)*o resulta em uma no0a rela)*o =R & S> %om o taman-o igual ou menor 8ue o=taman-o =R> & taman-o=S>>" O algoritmo desse o$erador 6 %om$osto $or dois %omandos
5oranin-ado" Os atri(utos 8ue est*o re$etidos $odem ser eliminados atra06s da o$era)*o de
$ro:e)*o" A #igura a(ai&o mostra o algoritmo usado na im$lementa)*o do o$erador :un)*o
do la)o anin-ado onde tr6 uma tu$la $erten%ente a rela)*o R e ts6 uma tu$la 8ue $erten%e a
rela)*o S e tstr6 uma tu$la 8ue $erten%e a R & S"
A :un)*o uni*o $ossui este nome1 $ois a id6ia $rin%i$al de seu algoritmo 6 semel-ante
ao algoritmo de ordena)*o m(r0(Sor#" A #igura < a(ai&o1 ilustra o algoritmo1 onde
?Atri(5un)*o@ s*o os atri(utos %omuns as duas rela)es" O algoritmo ini%ialmente ordena S
rela)es $elo atri(uto %omum entre as duas rela)es" De$ois1 o algoritmo asso%ia um
$onteiro a tu$la ini%ial de %ada rela)*o" Con#orme o algoritmo $rossegue1 os $onteiros
a0an)am atra06s das rela)es" m gru$o de rela)es 8ue $ossuem o mesmo 0alor $ara os
atri(utos %omuns as duas rela)es 6 armazenado em Ss" Finalmente as tu$las
%orres$ondentes de uma rela)*o s*o lidas e $ro%essadas"
For tr de R #a)a
For tsde S #a)a I# satis#azem a %ondi)*o ent*o Adi%ionar tr1tsao resultado
Fi0$ra . A/0ori#mo d( O6(rador H$n%o d( La%oAnin3ado
-
8/10/2019 Otimizador de consulta SQL
22/109
)&2 P/ano d( Ex(4$%o d( Cons$/#am $lano de e&e%u)*o de %onsultas =3EC> 6 %om$osto $or uma se8H'n%ia de
o$eradores alg6(ri%os 8ue a MEC 6 %a$az de e&e%utar1 %om o o(:eti0o de o(ter o resultado
de uma %onsulta de #orma mais r$ido $oss+0el" O otimizador de %onsulta 6 res$ons0el $or
es%ol-er1 dentre os o$eradores #+si%os im$lementados $ela MEC1 8uais s*o os mais
$ro$+%ios e a ordem deles $ara a %ria)*o do 3EC intermedirio de uma %onsulta es$e%i#i%a"
Ordenar r $or r?Atri(5un)*o@JOrdenar s $or s?Atri(5un)*o@J$rQ[ $rimeira tu$la de rJ
$sQ[ $rimeira tu$la de sJen8uanto =$s \ null e $r \ null> #a)a t
sQ[ tu$la de $s
SsQ[ t
sbJ
$s Q[ re%e(e $rP&ima tu$la de s
a%a(ou Q[ #alsoJ en8uanto n*o a%a(ou e $s \ null #a)a t
sc Q[ tu$la de $sJ
i# =tsc?Atri(5un)*o@ [ t
s?atri(:un)*o@ ent*o
SsQ[ S
sb t
scJ
$s Q[ $rP&ima tu$la de sJ se n*o a%a(ou Q[ 0erdadeiroJ end end t
rQ[ tu$la de $rJ
en8uanto $r \ null and tr?Atri(5un)*o@ ] t
s?Atri(5un)*o@ #a)a
$r Q[ $rP&ima tu$la de rJ t
rQ[ tu$la de $rJ
end en8uanto $r \ null e t
r
?Atri(5un)*o@ [ ts
?Atri(5n)*o@ #a)a
$ara %ada tsem S
s#a)a
resultdo Q[ tr& t
s
end
r Q[ rP&ima tu la de r
Fi0$ra 2 A/0ori#mo d( O6(rador H$n%o Na#$ra/ SILBERSCAT A*ra3m
QORT (nr S& SUDARSAN&
-
8/10/2019 Otimizador de consulta SQL
23/109
3ara se o(ter o 3EC #inal 6 ne%essrio in%luir o$eradores de %ontrole tais %omoQ leitura de
dis%o1 trans#er'n%ia $ela rede1 materializa)*o dos dados e et%"
Geralmente1 os 3ECs s*o estruturados na #orma de uma r0ore onde as #ol-as e os
nPs internos re$resentam os o$eradores e os ar%os re$resentam as rela)es $roduto
%onsumidor e&istente entre os o$eradores" Assim1 os 3ECs $odem assumir duas to$ologias
(si%asQ Linear = direita ou es8uerda> e Rami#i%ada"
A es%ol-a entre as to$ologias in#luen%ia no $ro%esso de e&e%u)*o e de otimiza)*o da%onsulta" A utiliza)*o das to$ologias lineares em %onsultas %om $redi%ados tem a
%ara%ter+sti%a de reduzir a 8uantidade de tu$las nas rela)es intermedirias1 o 8ue resulta
em %onsultas %om tem$o de e&e%u)*o menores" Contudo1 a utiliza)*o da to$ologia
rami#i%ada $ermite a %ria)*o de $lanos Ptimos1 $or6m1 o tem$o gasto em sua %ria)*o $ode
0ia(ilizar o seu uso" A to$ologia rami#i%ada #a0ore%e o $aralelismo -orizontal e distri(u+do1
en8uanto 8ue as lineares #a0ore%em o $aralelismo 0erti%al" O $aralelismo -orizontal 6 #eito
di0idindo a r0ore gerada $ela %onsulta em su(r0ores e&e%utando %ada su(r0ore em um
site" O $aralelismo 0erti%al o%orre 8uando %ada o$erador utiliza o resultado de um outro
o$erador1 assim as tu$las #luem $elos o$eradores mantendo %onstante a %arga de
$ro%essamento entre os mesmos"
Fi0$ra > To6o/o0ia d( PEC Lin(ar Es7$(rda Rami5i4ada Lin(ar
Dir(i#a PINEIRO )!!2&
-
8/10/2019 Otimizador de consulta SQL
24/109
)&> O#imi1ador
A otimiza)*o1 %omo des%rito a%ima1 %orres$onde a uma eta$a do $ro%essamento de
%onsulta" O otimizador tem $or o(:eti0o a es%ol-a de um entre os 0rios $lanos de %onsulta
8ue s*o gerados na eta$a de otimiza)*o" Ele de0e es%ol-er o $lano 8ue 0ai ser e&e%utado
em menor tem$o e %om o menor %usto" o $ro%essamento da %onsulta est $assa $or
trans#orma)esQ o otimizador re%e(e a %onsulta %omo um gra#o e entrega $ara a m8uina de
e&e%u)*o de %onsulta uma r0ore de %onsulta"
O %usto dos $lanos gerados na maioria dos otimizadores tem seus 0alores estimados1
$ois $ara sa(er o 0alor real de um $lano esse de0e ser e&e%utado e a e&e%u)*o de todos os
$lanos 8ue $odem ser gerados $elo otimizador 6 uma tare#a in0i0el =dado 8ue a 8uantidade
de $lanos gerados %res%e de #orma e&$onen%ial>" 3ara a estimati0a do %usto1 o otimizador
#az o uso de in#orma)es estat+sti%as das rela)es en0ol0idas1 %omo o taman-o das rela)es
8ue ser*o $roduzidas1 a $ro#undidade dos +ndi%es1 a 8uantidade de I/O ne%essria $ara a
%onsulta1 et%"
Mesmo usando dados estat+sti%os $ara a es%ol-a do $lano1 o otimizador $ode es%ol-er
um $lano de %onsulta 8ue n*o se:a o Ptimo"O tem$o 8ue o otimizador gasta $ara es%ol-er o mel-or $lano de %onsulta $ara
e&e%utar1 na m6dia1 de0e ser (em menor 8ue o tem$o 8ue o $ro%essador de %onsulta
gastaria $ara e&e%utar a mesma %onsulta sem otimizla"
E&istem duas estrat6gias 8ue s*o am$lamente usadas na im$lementa)*o do
otimizador" ma 6 (aseada em regras -eur+sti%as" A outra %al%ula a estimati0a do %usto de
di#erentes estrat6gias de e&e%u)*o e es%ol-e a8uela 8ue a$resenta a menor estimati0a de
%usto"
O otimizador realiza a sua otimiza)*o atra06s da lge(ra rela%ionalJ e o uso de
algumas o$era)es alg6(ri%as o 8uanto antes mel-ora a otimiza)*o" 3or e&em$lo1 a
utiliza)*o da o$era)*o de sele)*o o 8uanto antes #az a #iltragem -orizontal" O uso de
$ro:e)*o #azendo a #iltragem 0erti%al1 desde 8ue isso n*o $re:udi8ue as sele)es e os
-
8/10/2019 Otimizador de consulta SQL
25/109
$rodutos %artesianos entre as rela)es e #azendo o $ro%essamento uma ni%a 0ez de su(
e&$resses %omum a:uda na realiza)*o da otimiza)*o"
)&>&" Ar7$i#(#$ra do O#imi1ador d( Cons$/#a
uando uma %onsulta 6 $assada $ara um SG,D1 esta %onsulta 6 trans#ormada em
uma r0ore de %onsulta e esta r0ore $ode ser e&e%utada de 0rios modos sendo 8ue %ada
modo de e&e%utar a r0ore tem um %usto di#eren%iado" O otimizador de %onsulta1 a
$rin%i$io1 %onsidera todas as $ossi(ilidades de e&e%u)*o $ara $oder es%ol-er o mel-or
$lano" A #igura 1 (aseada em ?IOAIDIS1 4KK!@ mostra a eta$a de otimiza)*o do
$ro%essamento de %onsulta"
O $lano 6 o mPdulo $rin%i$al" ele 6 estimado o %usto de todos os $lanos $assados
$or ele e es%ol-e o mel-orU" B de$endente de tr's outros mPdulos de otimiza)*oQ o do
es$a)o alg6(ri%o1 o m6todo de estrutura e o modelo de %usto" O $lano lPgi%o da %onsulta 6
ent*o %on0ertido em um $lano #+si%o1 8ue indi%a a ordem em 8ue ser*o e&e%utadas as
o$era)es1 o algoritmo usado $ara e&e%utar %ada eta$a e ainda as maneiras %omo os dados
armazenados s*o o(tidos e %omo os dados s*o re$assados de uma o$era)*o $ara outra"
Fi0$ra 9 E#a6a d( O#imi1a%o do Pro4(ssam(n#o d( Cons$/#a
Modelo deCusto
Estimati0a dotaman-o da ta(ela
Es$a)oAlg6(ri%o
M6todo deEstrutura
3lano
-
8/10/2019 Otimizador de consulta SQL
26/109
5 o es$a)o alg6(ri%o determina a ordem de e&e%u)*o das a)es 8ue de0em ser
%onsideradas $ara %ada %onsulta emitida $elo $lano" Todas as e8ui0al'n%ias alg6(ri%as
$roduzem o mesmo resultado1 $or6m %om o desem$en-o e %usto di#eren%iado1 ou se:a1 o
es$a)o alg6(ri%o 6 o %on:unto de r0ores de o$eradores e8ui0alentes =lPgi%as e #+si%as> e
8ue $odem ser geradas a $artir da r0ore de o$eradores ini%ial %om o uso de regras de
trans#orma)es e8ui0alentes"
o m6todo estrutural s*o determinados os m6todos $ara a e&e%u)*o de %ada $lano
re8uisitada $ela lge(ra rela%ional" o %usto 6 es$e%i#i%ado o %usto de %ada #Prmula 8ue
ser usada na estimati0a $ara a e&e%u)*o do $lano" 3ara di#erentes ti$os de a%esso aos
+ndi%es e em geral $ara %ada eta$a do $lano de e&e%u)*o1 - uma #Prmula do %usto $ara a
e&e%u)*o do $lano" Dada a %om$le&idade de alguns desses $lanos1 algumas #Prmulas s*o
a$ro&ima)es de estimati0as"
a estimati0a do taman-o das ta(elas s*o o(tidos o taman-o do (an%o de dados e os
+ndi%es" Essas estimati0as s*o ne%essrias $ara o %l%ulo do %usto"
)&>&) Ti6os d( O#imi1a%o
O#imi1a%o ($r
-
8/10/2019 Otimizador de consulta SQL
27/109
o E&e%utar as sele)es antes das $ro:e)esQ E&e%ute a sele)*o antes da $ro:e)*o1 :
8ue as sele)es t'm o $oten%ial de reduzir signi#i%ati0amente o taman-o das
rela)es e $ermite o uso de +ndi%es $ara a%essar as tu$las"
o E&e%utar as o$era)es de sele)es e $ro:e)es antes da :un)*o ou outras
o$era)es (inrias1 o 8ue diminui o taman-o do ar8ui0o intermedirio resultante"
O#imi1a%o Sin##i4a
o otimizador sintti%o todas as ta(elas s*o %olo%adas na ordem original da %onsulta
do usurio" O otimizador1 na tentati0a de otimizar a %onsulta1 identi#i%a os +ndi%es 8ue s*o
teis $ara a re%u$era)*o dos dados" Esse ti$o de otimizador $ode ser e&tremamente
e#i%iente ao al%an)ar dados em um am(iente relati0amente estti%o" sando o otimizador
estti%o os +ndi%es $odem ser %riados e a:ustados $ara mel-orar a e#i%i'n%ia da %onsulta" O
$ro(lema 6 8uando os dados s*o din9mi%os"
O#imi1a%o Bas(ada no C$s#o
Esta otimiza)*o 6 #eita (aseada no %usto de %ada $lano e $ara o(ter o %usto de %ada$lano1 o SG,D guarda algumas in#orma)es so(re os dados armazenado1 guardando
in#orma)es so(re o taman-o das ta(elas1 o ti$o de estrutura1 os +ndi%es $rimrios1
se%undrios1 os atri(utos de seleti0idade =$er%entual de tu$las 8ue s*o di#erentes>" 3ara 8ue
o otimizador $ossa re%u$erar essas in#orma)es de #orma t*o e#i%iente 8uanto $oss+0el =e
%om isso ter um %usto mais real $oss+0el> ele usa as in#orma)es 8ue est*o armazenadas"
O o(:eti0o do otimizador (aseado no %usto n*o 6 $roduzir a mel-orU r0ore de
e&e%u)*o $ara a re%u$era)*o dos dados re8ueridos1 e sim #orne%er uma r0ore de e&e%u)*o
razo0el" 3ara uma %onsulta mais %om$le&a a estimati0a do %usto 6 (aseado na a0alia)*o de
um su(%on:unto de todas as ordens $oss+0eis e nas in#orma)es estat+sti%as 8ue estima a
seleti0idade de %ada o$era)*o rela%ional" Essas estimati0as de %usto $odem ser somente t*o
e&atas 8uando os dados estat+sti%os dis$on+0eis de0ido .s mudan)as 8ue o%orrem nos dados
-
8/10/2019 Otimizador de consulta SQL
28/109
e as in#orma)es so(re eles n*o estar atualizadas" A maioria dos SG,Dfs mant'm essas
in#orma)es na ta(ela ou nos %atlogos do sistema 8ue s*o atualizados $eriodi%amente"
O#imi1a%o S(mn#i4a
O otimizador sem9nti%o o$era so(re a $remissa de 8ue o otimizador tem a %om$reens*o
(si%a do es8uema real da (ase de dados" uando uma %onsulta 6 su(metida1 o otimizador
usa o %on-e%imento $ara sim$li#i%ar ou ignorar uma %onsulta $arti%ular se #or garantido 8ue
a %onsulta retornar %omo resultado 0azio"
)&9 En$m(ra%o d( P/anos F argumento=s> e %al%ular o %usto de %ada %om(ina)*o1
es%ol-endo o mel-or"
Bo##om$6 3ara %ada su(e&$ress*o da r0ore do $lano lPgi%o de %onsulta1 s*o
%om$utados os %ustos de todos os modos $oss+0eis de e&e%utar a su(e&$ress*o" As
$ossi(ilidades e os %ustos $ara uma das su(e&$resses 8ue ser*o e&e%utadas s*o
%al%uladas %onsiderandose as o$)es das su(e&$resses %orres$ondentes1
%om(inandoas de todos os modos $oss+0eis %om im$lementa)es $ara o o$erador daraiz"
*o e&iste muita di#eren)a entre as duas a(ordagens" A a(ordagem to$doNn nos
$ermite eliminar %ertas o$)es 8ue n*o $oderiam ser eliminadas de (ai&o $ara %ima" Foram
desen0ol0idas estrat6gias (ottomu$ 8ue limitam as es%ol-as de maneira e#i%iente"
-
8/10/2019 Otimizador de consulta SQL
29/109
A a(ordagem de (ottomu$ 6 %on-e%ida %omo $rograma)*o din9mi%a1 na 8ual sP s*o
%onsiderados os mel-ores $lanos $ara %ada su(e&$ress*o 8uando %al%ulamos o $lano $ara
uma su(e&$ress*o maior"
)&' O C$s#o 6ara Ex(4$#ar $ma Cons$/#a
3ara estimar o %usto de 0rias estrat6gias de e&e%u)*o1 o otimizador tem 8ue dis$or
de in#orma)es 8ue se:am ne%essrias $ara o %l%ulo do %usto" De0e ser %on-e%ido o
taman-o das rela)es1 8ual o m6todo de a%esso $rimrio os atri(utos de a%esso $rimrio
$ara %ada rela)*o (em %omo o nmero de n+0el $ara %ada +ndi%e multin+0el 8ue estima o
nmero de a%esso aos (lo%os" E em alguns %asos 6 ne%essrio tam(6m sa(er o nmero de
(lo%os de +ndi%e de $rimeiro n+0el"
O nmero de 0alores distintos de um atri(uto e sua seleti0idade s*o $ar9metros
im$ortantes $ara realizar a estimati0a do %usto" A seleti0idade 6 a #ra)*o de registros 8ue
satis#azem a uma %ondi)*o de igualdade em um atri(uto1 o 8ue $ermite estimar a
%ardinalidade da sele)*o"Alguns e&em$los de %ustos $ara e&e%utar uma %onsultaQ
C$s#o d( a4(sso ao arma1(nam(n#o s(4$ndrioQ Consiste no %usto $ara $es8uisar1 ler e
gra0ar (lo%os de dados 8ue est*o no armazenamento se%undrioJ
C$s#o d( arma1(nam(n#oQ Consiste no %usto gerado $ara armazenar 8ual8uer ar8ui0o
tem$orrio gerado $or uma estrat6gia de e&e%u)*o de %onsultaJ
C$s#o d( 4om6$#a%oQ Consiste no %usto de realizar o$era)es dentro da memPria1 nos
(u##ers de dados durante a e&e%u)*o da %onsultaJ
C$s#o d( $#i/i1a%o d( m(m;riaQ Consiste na 8uantidade de (u##ers de memPria
ne%essrio $ara e&e%utar a %onsultaJ
C$s#o d( Com$ni4a%oQ 6 o %usto de mo0er a %onsulta e seus resultados do lo%al
re#erente do (an%o de dados at6 o lo%al ou terminal onde a %onsulta se originou"
-
8/10/2019 Otimizador de consulta SQL
30/109
)&= S(/(#i,idad( ( Es#ima#i,as d( C$s#o na O#imi1a%o d( Cons$/#a
O otimizador de %onsulta de0e estimar e %om$arar os %ustos $ara e&e%utar uma
%onsulta1 utilizando di#erentes estrat6gias de e&e%u)*o e de0e es%ol-er a estrat6gia %om a
menor estimati0a de %usto" 3ara 8ue isso #un%ione 6 $re%iso ter estimati0as de %ustos
$re%isos1 de modo 8ue di#erentes estrat6gias se:am %om$aradas de maneiras :ustas e
realistas" Al6m disso1 de0emos limitar o nmero de estrat6gias de e&e%u)*o a serem
%onsideradas1 0isto 8ue a 8uantidade de di#erentes $lanos 8ue $odem ser gerados 6 muito
grande" 3or e&em$lo1 $ara n rela)es ser*o geradas =2=n4>>/=n4> 3lanos e se todos os
$lanos #orem gerados1 o tem$o $ara #azer a estimati0a dos %ustos tornase in0i0el" Esse
m6todo 6 mais ade8uado $ara %onsultas %om$iladas1 nas 8uais #azse a otimiza)*o nomomento da %om$ila)*o e o %Pdigo da estrat6gia da e&e%u)*o 6 armazenado e e&e%utado
diretamente no momento da e&e%u)*o"
A otimiza)*o de %onsulta (aseada no %usto utiliza t6%ni%as tradi%ionais de otimiza)*o
8ue (us%am o es$a)o de solu)*o de um $ro(lema1 $ara uma solu)*o 8ue minimize uma
#un)*o o(:eti0a =%usto>" As #un)es de %ustos utilizadas na otimiza)*o de %onsulta s*o
estimati0as1 e n*o #un)es e&atas de %ustos1 de modo 8ue uma otimiza)*o $ode sele%ionar
uma estrat6gia de e&e%u)*o de %onsulta 8ue n*o se:a e&atamente a8uela %onsiderada Ptima"
)&- In5orma%?(s 6ara a Es#ima#i,a do C$s#o
Os otimizadores de %onsulta usam in#orma)es estat+sti%as armazenadas no %atlogo
do SG,D $ara estimar o %usto do $lano" O %atlogo de in#orma)es rele0antes so(re as
rela)es in%luiQ
rQ mero de tu$las na rela)*o r"
,rQ mero de (lo%os 8ue %ont6m as tu$las da rela)*o r
SrQ 6 o taman-o em (hte de uma tu$la da rela)*o r
FrQ 6 o #ator de (lo%o da rela)*o r1 ou se:a o nmero de tu$las da rela)*o r 8ue %a(e
em um (lo%o"
V=A1 r>Q 6 o nmero de 0alores distintos 8ue a$are%em na rela)*o r $ara o atri(uto A
-
8/10/2019 Otimizador de consulta SQL
31/109
SC=A1r>Q 6 a %ardinalidade de sele)*o do atri(uto A da rela)*o r"
Al6m do %atlogo de in#orma)es so(re as rela)es1 um %atlogo de in#orma)es
so(re +ndi%es 6 usadoQ
FiQ 6 ofan-outm6dio dos nPs internos do +ndi%e i $ara +ndi%es estruturados em r0ore"
TiQ 6 o nmero de n+0eis no +ndi%e i1 ou se:a1 a altura do +ndi%e"
L,iQ 6 o nmero de (lo%os de +ndi%e de n+0el mais (ai&o no +ndi%e i1 ou se:a1 o
nmero de (lo%os no n+0el de #ol-a do +ndi%e"
S*o usadas estat+sti%as a #im de estimar o taman-o do resultado e do %usto $ara 0rias
o$era)es e algoritmos"
Se 8uisermos manter estat+sti%as $re%isas1 ent*o1 todas as 0ezes 8ue uma rela)*o #or
modi#i%ada1 temos 8ue atualizar as estat+sti%as e estas atualiza)es gera um overhead
signi#i%ati0o" 3or isso a maioria dos sistemas n*o atualiza estat+sti%as em todas as
modi#i%a)es" Como resultado1 as estat+sti%as usadas $ara es%ol-er uma estrat6gia de
$ro%essamento de %onsulta $odem n*o ser %om$letamente $re%isas"
)&"! Con,(r#(ndo r,or( d( Cons$/#a (m P/ano d( Ex(4$%o d(Cons$/#a @PEC
m $lano de e&e%u)*o $ara uma e&$ress*o da lge(ra rela%ional re$resentado %omo
uma r0ore de %onsulta in%lui in#orma)es so(re os m6todos de a%essos dis$on+0eis $ara
%ada rela)*o1 (em %omo os algoritmos a serem utilizados no %l%ulo dos o$eradores
rela%ionais re$resentados na r0ore"
A %onsulta $ode ser e&e%utada %omo uma a0alia)*o materializada ou %omo a0alia)*o
pipelined" a a0alia)*o materializada1 o resultado de uma o$era)*o 6 armazenado %omo
uma rela)*o tem$orria1 isto 61 o resultado 6 #isi%amente materializado" a a0alia)*o
pipelined1 . medida 8ue s*o $roduzidas as tu$las resultante de uma o$era)*o elas s*oen%amin-adas diretamente $ara a $rP&ima o$era)*o na se8H'n%ia da %onsulta" A 0antagem
do pipelinedso(re a a0alia)*o de materializada 6 8ue na8uela tem uma redu)*o do %usto
$or n*o ser ne%essrio gra0ar os resultados intermedirios $ara o dis%o e n*o ter 8ue reler os
mesmos $ara a no0a o$era)*o"
-
8/10/2019 Otimizador de consulta SQL
32/109
. Pro4(ssam(n#o d( Cons$/#a (m Sis#(mas d( In#(0ra%od( Dados
.&" In#rod$%oAtualmente as organiza)es est*o sem$re . $ro%ura de #ormas de mel-orar os seus
$ro%essos" m dos meios de se o(ter esses a$rimoramentos 6 a gera)*o e a mani$ula)*o de
grandes 8uantidades de dados" A mani$ula)*o destes dados 61 geralmente1 #eita atra06s de
sistemas de in#orma)*o" Muitos dos sistemas de in#orma)*o e&istentes $ossuem %omo
%ara%ter+sti%as1 al6m de outras1 o armazenamento dos dados de #orma $ermanente a sua de0ida
re%u$era)*o"
As in#orma)es o(tidas $or meio dos sistemas de in#orma)*o s*o %riadas a $artir de
dados" Todo sistema de in#orma)*o 8ue armazenam dados de0e #az'lo segundo um modelo a
#im de %onseguir re%u$erlo $osteriormente" In#orma)es muitas 0ezes s*o %riadas utilizando
dados e&istentes em di0ersos sistemas inde$endentes" 3ortanto1 $ode ser %on0eniente 8ue
%ertos dados de uma organiza)*o se:am %om$arti-ados %om outras organiza)es1 uma 0ez 8ue
%ada organiza)*o $ossui um %on:unto de dados re#erente aos segmentos 8ue atuam" Essa
situa)*o $ode o%orrer1 $or e&em$lo1 %om #i%-as de $a%iente de -os$itais ou #i%-a de detidos
em de$artamento da $ol+%ia" Su$ondo 8ue %ada organiza)*o ten-a o seu sistema de
organiza)*o1 estes $odem $ossuir a ne%essidade de a%essar #ontes de dados e&istentes emoutros sistemas"
Todos os dados so(re os 8uais se tem o interesse de armazenlos e $osteriormente
re%u$erlos de0em ser armazenados segundo um $adr*o" Os dados $odem ser armazenados
so( di0ersos $adres1 muitas 0ezes in%om$at+0eis entre si" Isso torna o seu %om$artil-amento
entre sistemas di#erentes ou a uni*o %om dados de outros sistemas $ara a %ria)*o de
in#orma)es uma a)*o %om$le&a" A #un)*o de uni#i%ar1 %om$artil-ar e -omogeneizar os dados
geralmente #i%am a %argo dos sistemas de integra)*o"
Sistemas de integra)*o de dados t'm $or o(:eti0o #orne%er aos usurios uma 0is*o
integrada dos dados armazenados em di#erentes #ontes de dados1 de #orma trans$arente de
lo%aliza)*o1 modelo de dados1 linguagem1 sistema o$era%ional e #orma de a%esso" Sistemas de
integra)*o %onstituem uma %amada intermediria entre as #ontes de dados e a a$li%a)*o
;
-
8/10/2019 Otimizador de consulta SQL
33/109
%liente1 tendo sido ent*o mais re%entemente denominados de middleware$ara integra)*o de
dados"
Os %on%eitos e $ro(lemas en%ontrados em $ro%essamento de %onsulta em sistema de
integra)*o de dados s*o (asi%amente os mesmos de (an%o de dados distri(u+do" Assim1 ser*o
a$resentados a seguir os %on%eitos de $ro%essamento de %onsulta em (an%o de dados
distri(u+dos"
.&) Pro4(ssam(n#o d( Cons$/#a (m Ban4o d( Dados Dis#ri*$ 6 um sistema de so#tNare 8ue $ermite a geren%ia do (an%o de
dados distri(u+do e 8ue torna a distri(ui)*o =de %ontrole e de dados> trans$arente ao usurio
?S/VALDRIE1 24@" So( o $onto de 0ista do usurio1 um SG,DD de0e $are%er
e&atamente %omo o SG,D n*o distri(u+do1 %onsiderando 8ue o mesmo $ode ser a%essado $or
8ual8uer um dos nPs" Segundo ?DATE1 2@ 6 dese:0el 8ue o SG,DD ten-a %ertas
%ara%ter+sti%as tais %omoQ Grande autonomia nos sites lo%ais1 os 8uais de0em ser tratados %omo iguais e de0em
de$ender1 o m+nimo $oss+0el de um site %entralJ
3ro%essamento distri(u+do de %onsulta1 ou se:a1 as %onsultas su(metidas a um site de0em
ser otimizadas e $odem ser e&e%utadas em outros sites1 se ne%essrioJ
Trans$ar'n%ia no a%esso a dados distri(u+dos =#ragmentos e r6$li%as>J
Inde$end'n%ia de $lata#orma de -ardNare1 de sistema o$era%ional1 de rede e de SGD,
lo%alJ
;4
-
8/10/2019 Otimizador de consulta SQL
34/109
os
sistemas de (an%os de dados distri(u+dos a %onsulta $ode ser realizada de duas #ormasQ
D( 5orma 4(n#ra/i1adaQ o ser0idor e&e%uta todas as %onsultas utilizando os dados dos
outros ser0idores en0ol0idos na %onsultaJ
D( 5orma dis#ri*$
-
8/10/2019 Otimizador de consulta SQL
35/109
De0ese (alan%ear o 0olume de dados a ser trans$ortado %om o %usto total do $ro%essamen
to =%usto de transmiss*o mais o %usto de $ro%essamento nos sites 8ue est*o en0ol0idos na
%onsulta>
O $ro%essamento de %onsulta em um SG,DDs est mostrado na #igura j"
;;
Consulta so(re rela)es distri(u+das
De%om$osi)*o de%onsulta
Otimiza)*o Glo(al
Lo%aliza)*o de dados
Consulta de #ragmentos
Es8uemaGlo(al
Es8uema deFragmentos
Estat+sti%as so(reFragmentos
Otimiza)*o lo%al
Consultas lo%ais otimizadas
Consulta de #ragmentos otimizados%om o$era)es de %omuni%a)*o
Es8uemaLo%al
Consulta alg6(ri%a so(rerela)es distri(u+das
3ro%essador =MEC>
Fi0$ra = E#a6as d( Pro4(ssam(n#o d( 4ons$/#a (m BDDs&
-
8/10/2019 Otimizador de consulta SQL
36/109
O $ro%essamento de %onsulta de0e inter$retar e analisar a %onsulta glo(al re%e(ida1
$roduzir as su(%onsultas 8ue ser*o su(metidas a %ada uma das #ontes de dados =sites>1 gerar
um $lano de e&e%u)*o glo(al otimizado e $ro%eder a e&e%u)*o da %onsulta e a %om$osi)*o dos
resultados"
D(4om6osi%o da 4ons$/#a
Trans#orma a %onsulta em uma %onsulta alg6(ri%a so(re rela)es glo(ais
a de%om$osi)*o da %onsulta esta $assa $or tr's eta$as su%essi0as e a %onsulta 6 ent*o1
analisada1 sim$li#i%ada e reestruturada"
a eta$a de anlise a %onsulta 6 analisada semanti%amente1 de #orma 8ue as %onsultas
in%orretas se:am dete%tadas e re:eitadas o 8uanto antes"
Geralmente a %onsulta su(metida 6 trans#ormada em um gra#o de %onsulta glo(al
%ontendo um %on:unto de o$era)es de sele)*o1 $ro:e)*o e :un)*o" o gra#o1 um dos nPs 6 o
de resultado e os outros1 indi%am as rela)es glo(ais" ma aresta entre dois nPs =e&%eto o nP
resultado> re$resenta uma :un)*o1 en8uanto 8ue uma aresta ao nP resultado indi%a $ro:e)*o"
O gra#o de %onsulta 6 til $ara determinar a %orretude da %onsultaQ se o gra#o 6 n*o
%one%tado1 a %ausa 6 uma aus'n%ia de um $redi%ado de :un)*o =%lusula Whereem S!> na
%onsultae1 neste %aso1 a %onsulta de0e ser re:eitada"
A %onsulta a(ai&o ser trans#ormada em um gra#o %one%tado 8ue est mostrado na
#igura K"
SELECT EAME1RES3
FROM E1 G1 5
XERE E"EO [ G"EO
AND G"5O [ 5"5O
AND 5AME [ kCAD/CAMk
AND DR ^ ;AND TITLE [ k3rogramadork
;1 8ue s*o sistemas 8ue 0isam $ermitir a%esso a (an%o de dados autnomos1
-eterog'neos e distri(u+dos o#ere%endo todos os ser0i)os de um (an%o de dado %entralizado"
A %lassi#i%a)*o de sistema de integra)*o de dados (aseada na ar8uitetura mediador
ada$tador $ro$osta $or ?IEDEROLD1 4KK2@ e 8ue est mostrada na #igura 44 e a$resenta o
seguinte modo de $ro%essar uma %onsulta"
3ara %ada #onte de dados e&iste um ada$tador =wrapper> 8ue e&$orta in#orma)es so(re oseu es8uema e suas %a$a%idades de $ro%essamento
m mediador %entraliza as in#orma)es e&$ortadas1 $elos ada$tadores1 num di%ionrio de
dados glo(al e 6 res$ons0el $elo $ro%essamento das %onsultas de integra)*o"
;X
-
8/10/2019 Otimizador de consulta SQL
40/109
De0ido . -eterogeneidade dos dados1 #azse ne%essrio %riar di#erentes ada$tadores1 um
$ara %ada modelo de dados" A #un%ionalidade dos ada$tadores $ode 0ariar desde sim$lesroteador de $edido de %onsultas a SG,D1 at6 $oderosas MECs =M8uina de E&e%u)*o de
Consulta> so(re #ontes %om %a$a%idades limitadas de e&e%u)*o"
O mediador mant6m um %atlogo glo(al usado no $ro%essamento de %onsulta e 8ue
armazenaQ
O es8uema glo(al de todo (an%o de dados e 8ue ser usado no $ro%essamento de %onsulta
do usurioJ
O es8uema e&terno e&$ortado $elas #ontes de dados1 ou se:a1 8ual $arte do es8uema
glo(al 6 #ormada $or %ada #onteJ
Estat+sti%as $ara otimiza)*o1 %aso e&istam"
A #igura 42 ilustra o $ro%essamento da %onsulta de integra)*o (aseado na ar8uitetura
mediadorada$tador1 8ue segue as seguintes eta$asQ
;j
Su(%onsulta
Res$osta
Su(%onsulta
Res$osta
Mediador
Ada$tador =Nra$$er> Ada$tador =Nra$$er>
Fonte deDados 2
Fonte deDados 2
CatlogoGlo(al
Consulta Res$osta
Fi0$ra "" Ar7$i#(#$ra M(diadorAda6#ador
-
8/10/2019 Otimizador de consulta SQL
41/109
o An/is(Q ,aseandose no %atlogo glo(al1 sele%iona as #ontes de dados 8ue $odem
%ontri(uir $ara res$onder as %onsultas e 0eri#i%ar a dis$oni(ilidade das #ontes
sele%ionadas e sua 8uantidade de $ro%essamentoJ
o R((s4ri#aQ Con0erte a %onsulta =(aseado no es8uema glo(al> $ara su(%onsultas
=(aseado nos es8uemas lo%ais das #ontes de dados> as 8uais s*o en0iadas $ara os
res$e%ti0os ada$tadores1 sele%ionando um %on:unto m+nimo de #ontes $ara en0iar $ara
os ada$tadores"
o O#imi1a%oQ Visa determinar a %onsulta Ptima 8ue de0e ser en0iada $ara %ada um dos
ada$tadores" O otimizador de0e sele%ionar o 3EC =3lano de E&e%u)*o de Consulta>
8ue e&$lore1 da mel-or #orma $oss+0el . %a$a%idade de %ada #onte de dados"
Os ada$tadores traduzem as su(%onsultas re%e(idas do mediador1 do modelo de dadosglo(al $ara os modelos de dados lo%ais1 $ermitindo 8ue se:am entendidas $ela inter#a%e da
#onte de dados es$e%i#i%a" A$Ps a e&e%u)*o das su(%onsultas #eitas $elas #ontes de dados =ou
em $arte1 $elos ada$tadores> os ada$tadores retornam ao mediador os resultados gerados1 :
%on0ertidos $ara o modelo glo(al do mediadorJ
O mediador %om(ina os resultados $ar%iais re%e(ido dos ada$tadores1 $roduzindo o
resultado #inal da %onsulta do usurio" Al6m disso1 %aso se:a ne%essrio1 o mediador e&e%utar
algumas o$era)es da %onsulta"
;K
-
8/10/2019 Otimizador de consulta SQL
42/109
Ada$tador=Nra$$er>
Ada$tador=Nra$$er>
Fonte
Fonte
Fonte
Modelo de dados
glo(ais
Modelo de
dados lo%ais
Inter#a%esDi#erentes
Fi0$ra ") Pro4(ssam(n#o d( Cons$/#a no M(diadorada6#ador
-
8/10/2019 Otimizador de consulta SQL
43/109
Como nos sistemas de integra)*o de dados as #ontes de dados s*o autnomas e
-eterog'neas e&iste uma maior di#i%uldade na otimiza)*o da %onsulta em rela)*o aos
SG,DDs" Isto $or8ue os %om$onentes sendo autnomos eles a$resentam %a$a%idades
di#erentes de gerar %ustos 8ue s*o di#+%eis de $redizer"
o $rP&imo %a$+tulo ser a$resentada uma $ro$osta $ara um otimizador $ara um
sistema de integra)*o de dados1 no %aso o CoDIMS"
-
8/10/2019 Otimizador de consulta SQL
44/109
2 Pro+(#o d( $m O#imi1ador d( 4ons$/#a 6ara o CoDIMS
2&" CoDIMS
O CoDIMS _ Configurable Data Integration Middleware System 6 um am(iente
#le&+0el e %on#igur0el (aseado em %om$onentes e framework $ro:etado $ara $ro0er
e&tensa(ilidade e %on#igura)*o $ara gera)*o de sistemas de integra)*o de dados" m
sistema de integra)*o de dados1 %omo o CoDIMS1 re%e(e dados -eterog'neos de 0rias
#ontes de dados1 estes dados s*o %on0ertidos $ara o modelo de dados %omum $elos
wrapppers" s*o integrados e re$assados $ara a a$li%a)*o %liente %om uma 0is*o integrada"
ma es$e%i#i%a)*o mais detal-ada do CoDIMS en%ontrase me ?,AR,OSA1 24@" A
#igura 4; a$resenta uma 0is*o geral de um sistema de integra)*o de dados"
-
8/10/2019 Otimizador de consulta SQL
45/109
O CoDIMS tem a sua ar8uitetura (aseada em %om$onentes 8ue interagem entre si1
%om a a$li%a)*o %liente e %om as #ontes de dados" A #igura 4< a$resenta um es8uema geral
do CoDIMS e seus %om$onentes" A %on#igura)*o 6 o(tida atra06s de um %om$onente deControle1 8ue e&$orta as inter#a%es dos %om$onentes integrados e ma$eia re8uisi)es de
usurio $ara um workflowe&e%ut0el de ser0i)os e 8ue determina os #lu&os de dados entre
os %om$onentes" 3ara #le&i(ilizar a im$lementa)*o dos ser0i)os1 eles s*o im$lementados
utilizando a t6%ni%a de frameworks" Atra06s do reuso ou ada$ta)*o de %om$onentes
framework1 o am(iente o#ere%e uma res$osta $ara a gera)*o de sistema de integra)*o de
dados dire%ionados $ara re8uisitos es$e%+#i%os da a$li%a)*o"
-
8/10/2019 Otimizador de consulta SQL
46/109
Fi0$ra "2 Viso G(ra/ do CoDIMS ( s($s Com6on(n#(s BARBOSA )!!"&
Os me%anismos de %on#igura)*o do CoDIMS $ermitem a %ria)*o de um sistema de
integra)*o de dados %on#igurados onde di0ersas #ontes1 $ossi0elmente -eterog'neas edistri(u+das1 %ontri(uem $ara a e&e%u)*o da %onsulta" A %ara%ter+sti%a de integra)*o de
dados -eterog'neos se d de0ido . %a$a%idade do %om$onente A%esso aos Dados de
a%essar dados1 atra06s dos Wrappers1 em #ontes de di0ersos #ormatos e ao %om$onente de
3ro%essamento de Consulta de ada$tar o $ro%essamento da %onsulta ao #ormato dos dados"
-
8/10/2019 Otimizador de consulta SQL
47/109
A a(ordagem do CoDIMS $ara o desen0ol0imento de sistemas de integra)*o de
dados es$e%i#i%am algumas inter#a%e $r6de#inidas %orres$ondendo a ser0i)os middleware
$ara integra)*o de dados =Data Integration Middleware Services> DIMS geralmente
nesses ti$os de sistemas (aseados em ser0i)os de (an%o de dados1 o 8ue in%luiQ Ger'n%ia
de Metadados1 3ro%essamento de Consulta1 e A%esso aos Dados" 3or trs de %ada uma
dessas inter#a%es1 $odem ser sele%ionados %om$onentes1 %om di#erentes im$lementa)es1
$ara #azer $arte de um sistema %on#igurado" Al6m disso1 o am(iente o#ere%e um
%om$onente Controle1 o 8ual #az $arte de 8ual8uer %on#igura)*o" o0as inter#a%es1
%orres$ondendo a DIMS n*o $re0istos ini%ialmente1 $odem ser adi%ionadas ao am(iente
atra06s de sua im$lementa)*o e $osterior $u(li%a)*o no %om$onente Controle" O ser0i)o
adi%ionado 6 in%lu+do em uma se8H'n%ia de workflow$ara ser a0aliado $elo %ontrole em
res$osta a uma re8uisi)*o do usurio" A #le&i(ilidade o(tida %om essas t6%ni%as $ode ser
assim resumidaQ
Com$onentes DIMSQ 3ro0'm #un%ionalidades de ser0i)os de integra)*o de dadosJ
#rameworksQ 3ro06m #le&i(ilidade ao %om$onente dos DIMSJ
Com$onente de ControleQ $ossi(ilita a integra)*o dos DIMS em um sistema
%on#igurado
A ar8uitetura do CoDIMS se (aseia em %om$onentes 8ue $odem se en%ontrados
distri(u+dos na rede" Assim um #ator im$ortante 6 a %omuni%a)*o entre os di0ersos
%om$onentes" Atualmente1 os %om$onentes s*o im$lementados %omo web services e
utilizam o $roto%olo SOA3 =Simple $b%ect &cess 'rotocol> $ara se %omuni%arem
?TREVISOL1 2
-
8/10/2019 Otimizador de consulta SQL
48/109
=0ises e&ternas>" Metadados de %ada #onte s*o estruturados de a%ordo %om o ti$o de %ada
#onte de dado 8ue se dese:a integrar" Metadados de e&$orta)*o re$resentam 0ises dos
metadados $erten%entes a %ada #onte de dados1 $or6m ma$eados $ara um modelo %omumQ
O modelo de dados es%ol-ido $ara uma %erta inst9n%ia do CoDIMS" Metadados glo(al
%orres$onde a integra)*o de todos os metadados de e&$orta)*o1 %riando uma 0is*o
-omog'nea de todos os dados integrados $ara a a$li%a)*o %liente" As in#orma)es
e&istentes no %om$onente Metadados s*o im$ortantes $ara a $rodu)*o de su(%onsultas
8ue s*o $roduzidas $ela M8uina de E&e%u)*o de Consulta do CoDIMS" ma $ro$osta
do Metadados $ara o CoDIMS en%ontrase em ?SILVESTRE1 2!@" E um estudo so(re
wrappers en%ontrase em ?COCO1 2!@"
O %om$onente de A%esso aos Dados 6 res$ons0el $ela %omuni%a)*o %om as #ontes
de dados dis$on+0eis" Ele #az a %omuni%a)*o %om os Wrappers1 sendo 8ue %adaWrapper
est 0in%ulado a uma #onte de dados" A #un)*o do Wrapper6 traduzir a re8uisi)*o da
%onsulta en0iada $ela M8uina de E&e%u)*o de Consulta $ara uma linguagem 8ue a #onte
de dados %om$reenda e trans#ormar o resultado o(tido da #onte de dados em um #ormato
8ue a MEC entenda" ma $ro$osta $ara a alo%a)*o e distri(ui)*o de Wrappers no
CoDIMS en%ontrase em ?,IACARDI1 2!@"
O %om$onente 3ro%essamento de Consulta trans#orma uma %onsulta es%rita em
linguagem de alto n+0el em um $lano de e&e%u)*o de %onsulta" Dada a sua im$ort9n%ia
neste tra(al-o1 ser a$resentado em mais detal-es"
2&) Pro4(ssam(n#o d( Cons$/#a no CoDIMS
O $ro%essamento de %onsulta no CoDIMS ini%iase na a$li%a)*o %liente1 atra06s da
su(miss*o de uma %onsulta es%rita em linguagem de alto n+0el1 tal %omo o SL1 sendo
ent*o en0iada $ara o %om$onente de Controle" O %om$onente de Controle %onsulta o
workflow e re$assa a %onsulta ao %om$onente 3ro%essamento de Consulta"
-
8/10/2019 Otimizador de consulta SQL
49/109
Dada a %om$le&idade do %om$onente 3ro%essamento de Consulta1 as
#un%ionalidades 8ue ele $ossui s*o en%a$suladas em su(%om$onentes1 8ue s*oQ
Analisador1 Rees%ritor1 Otimizador e M8uina de E&e%u)*o de Consultas" A #igura 4!
mostra os su(%om$onentes do 3ro%essamento de %onsulta"
Ana/isadoresta #ase a %onsulta glo(al 6 0alidada atra06s da anlise sintti%a e l6&i%a1 sendo
usadas as in#orma)es %ontidas nos metadados" Em %aso de erro de sem9nti%a1 de sinta&e
ou ti$o in%orreto de dados a %onsulta 6 re:eitada e retornada ao %liente %om o res$e%ti0o
moti0o da re:ei)*o"
ma %onsulta 6 semanti%amente in%orreta se ela n*o a$resentar todas as
in#orma)es $ara a gera)*o do 3lano de E&e%u)*o de Consulta =3EC>"
A %onsulta 6 trans#ormada em uma #orma intermediria 8ue re$resenta a %onsulta
em um #ormato %anni%o =%omo gra#o de %onsulta> $ermitindo a e&$ress*o dos
%om$onentes da %onsulta =ta(elas e o$era)es lPgi%as rela%ionais> sem uma $r6de#ini)*o
de uma ordem de e&e%u)*o"
-
8/10/2019 Otimizador de consulta SQL
50/109
o gra#o de %onsulta tal %omo na #igura K =$g";1 um dos nPs 6 o resultado e os
outros1 indi%am as rela)es glo(ais" ma aresta entre dois nPs =e&%eto o nP resultado>
re$resenta uma :un)*o1 en8uanto uma aresta ao nP resultado indi%a uma $ro:e)*o"
R((s4ri#or
Com o gra#o da %onsulta glo(al e (aseandose nas in#orma)es %ontidas nos
metadados de e&$orta)*o das #ontes de dados 8ue est*o en0ol0idas na %onsulta1 o Re
es%ritor1 %omo o nome diz1 rees%re0e a %onsulta su(metida1 agru$ando as in#orma)es
8ue de0em ser #orne%idas $or %ada #onte de dados"
O Rees%ritor agru$a as su(%onsultas $or #onte de dados de maneira 8ue uma1 e
a$enas uma su(%onsulta1 se:a en0iada a %ada #onte de dados $ara %ada %onsulta glo(al
#orne%ida"
O#imi1ador
A $artir do gra#o $assado $elo Rees%ritor $ara o Otimizador1 este $roduz um $lano
de e&e%u)*o 8ue este:a otimizado $ara a %onsulta dada1 atra06s de trans#orma)es
alg6(ri%as e #+si%as" O otimizador #az uso das $ro$riedades %omutati0as e asso%iati0as das
:un)es1 e distri(uti0as das sele)es so(re as :un)es1 $ara modi#i%ar o $lano ini%ial1 o 8ue
resulta em estrat6gia de e&e%u)*o umas a%eit0eis e outras in0i0eis" O otimizador 0isa a
en%ontrar uma ordena)*o Ptima destas o$era)es1 o 8ue nem sem$re 6 $oss+0el1 $ois dea%ordo %om o nmero de #ontes en0ol0idas na %onsulta1 o nmero de estrat6gias $ode
%-egar a ser um $ro(lema da %lasse 3" Ent*o1 o $a$el do otimizador 6 en%ontrar uma (oa
estrat6gia1 ou at6 mais im$ortante do 8ue isso1 e0itar as $6ssimas estrat6gias"
M7$ina d( Ex(4$%o d( Cons$/#a MEC
O 3EC de menor %usto es%ol-ido $elo otimizador 6 ent*o en0iado $ara a MEC1 8ue
im$lementa os o$eradores lPgi%os e #+si%os =su$ortados $elo sistema>" A MEC 6
res$ons0el $or ati0ar a e&e%u)*o1 na %adeia de o$era)es e&$li%itada no 3EC1 e retorna o
%on:unto resultado $ara o %liente"
Os su(%om$onentes do Com$onente 3ro%essamento de Consulta $odem ser
%on#igurados $ara e&istirem de duas #ormasQ dentro do %om$onente de 3ro%essamento de
Consulta ou %omo %om$onente remoto"
-
8/10/2019 Otimizador de consulta SQL
51/109
A 0antagem dos su(%om$onentes estarem in%lu+dos dentro do 3ro%essamento de
Consulta 6 o gan-o de 0elo%idade no $ro%essamento da %onsulta" Isso o%orre1 $ois est*o
reunidos em um mesmo %om$onente e %om isso eliminase a $ossi(ilidade de o%orrer
$ro(lemas na %omuni%a)*o atra06s da rede" 3or6m1 essa a(ordagem limita as
$ossi(ilidades de %riar no0as %on#igura)es"
A %ria)*o de su(%om$onentes remotos $ermite 8ue %ada %om$onente se torne
inde$endente dos outros1 $ermitindo a sua su(stitui)*o sem 8ue o%orra inter#er'n%ia nos
outros" Isso tam(6m $ermite 8ue os su(%om$onentes $ossam ser distri(u+dos atra06s da
rede o mais $rP&imo $oss+0el de onde eles s*o ne%essrios" A de#ini)*o de inter#a%es $ara
a %omuni%a)*o $ermite tam(6m a %ria)*o de no0os %om$onentes 8ue ten-am as mesmas
#un%ionalidades1 mas 8ue as realizem de #orma di#erentes1 #azendo assim uma mel-or
ada$ta)*o do CoDIMS ao %enrio em 8ue ele ser utilizado"
este tra(al-o ser es$e%i#i%ado e im$lementado um otimizador de %onsulta $ara o
CoDIMS1 e essa im$lementa)*o #oi (aseada em ?3ORTO1 24@"
2&. O#imi1ador d( Cons$/#a do CoDIMS
O CoDIMS 0isa o#ere%er #a%ilidade de ada$ta)*o ao %onte&to em 8ue ele ser
utilizado" Logo1 o Otimizador de Consulta do CoDIMS de0e ser %a$az de otimizar as%onsultas inde$endente dos %enrios em 8ue elas o%orrem1 %omoQ re$li%a)*o de dados1
am(iente de $ro%essamento $aralelo1 dados distri(u+dos $or 0rias #ontes1 #lu&o de dados
alternati0os entre outros" O Otimizador de0e ser %a$az de atender a estas situa)es"
O CoDIMS de0e se ada$tar a %ada %enrio sem 8ue isto %ause $ro(lemas %om o
aumento dos %ustos de desen0ol0imento1 ne%essitando de re%ursos de so#tNare e -ardNare
mais $oderosos e $ro(lemas de desem$en-o" Em %ontra $artida1 a %ria)*o de um
otimizador 8ue atenda a todos os %enrios ou a grande $arte dos %enrios1 resultaria na
%ria)*o de um middlewaremais %om$le&o" Assim1 %om a utiliza)*o de um Otimizador
e&$ans+0el 6 $oss+0el %riar o$eradores 8ue mel-or atendam aos ti$os es$e%+#i%os de
%onsulta de %ada %enrio1 sem %riar uma so(re%arga no middleware1 al6m de ada$tar o
Otimizador a 8ual8uer modelo de dados"
-
8/10/2019 Otimizador de consulta SQL
52/109
2&.&" F$n4iona/idad( do O#imi1ador
Com a %ria)*o de no0os o$eradores alg6(ri%os e de %ontrole 6 $oss+0el a %ria)*o de
um Otimizador e&$ans+0el $ara o CoDIMS" O Otimizador de0e %on-e%er 8uais
o$eradores 8ue est*o im$lementados na MEC e determina os o$eradores alg6(ri%os e os
mPdulos de e&e%u)*o 8ue #ormam o 3EC"
2&.&) Lo4a/i1a%o F
Assim o %om$onente 3ro%essamento de Consulta se trans#ormaria no $a%ote
3ro%essamento de Consulta %om os seguintes $a%otesQ Analisador1 Rees%ritor1
!
Analisador Rees%ritor
Otimizador MEC
Metadados Controle A%esso aos Dados
Fi ura 4Q 3ro%essamento de Consulta %om su(Com onentes %omo inst9n%ias internas
Com$onente 3ro%essamento de Consulta
-
8/10/2019 Otimizador de consulta SQL
53/109
Otimizador e MEC" E essa no0a ar8uitetura teria o seu #lu&o totalmente %ontrolado $ela
%on#igura)*o lPgi%a =workflow>"
As des0antagens de ser ter o Otimizador de %onsulta deste modo 6 8ue o%orreria
uma so(re%arga do %om$onente de Controle e da rede de %omuni%a)*o" A #igura 4X ilustra
a ar8uitetura interna do $a%ote 3ro%essamento de Consulta"
m %om$onente remoto"O otimizador $ode ser instan%iado %omo um %om$onente remoto =Web Service>" A
%ria)*o de %om$onentes remotos a $artir dos su(%om$onentes do 3ro%essamento de
Consulta 6 uma $ossi(ilidade de e0olu)*o da ar8uitetura interna do %om$onente"
A des0antagem desta ar8uitetura 6Q o tr#ego na rede de %omuni%a)*o $ode %res%er
muito entre a lo%aliza)*o #+si%a dos %om$onentes remotos e a gera)*o de %om$onentes
remotos o 8ue $ossui um alto grau de %om$le&idade" A #igura 4j ilustra a ar8uitetura %om
os %om$onentes remotos"
!4
Ger'n%ia deMetadados
ControleA%esso aosDados
Analisador
Rees%ritor
MEC
Otimizador
Fi0$ra "' Ar7$i#(#$ra In#(rna do Pa4o#( Pro4(ssam(n#o d( Cons$/#a
Analisador Rees%ritor Otimizador
Fa%-ada 3ro%essamento de Consulta
MEC
A%esso aosDados
ControleGer'n%ia deMetadados
3a%ote do3ro%essamento deConsulta
-
8/10/2019 Otimizador de consulta SQL
54/109
2&2& Es6(4i5i4a%o F$n4iona/ do O#imi1ador d( Cons$/#a do CoDIMS
O Otimizador1 %on#orme 0isto anteriormente1 re%e(e um gra#o de %onsulta1 %omo
entrada1 8ue est ma$eado %omo uma mensagem em ML e $roduz um $lano de
e&e%u)*o de %onsulta =3EC>" O gra#o de %onsulta o(t6m as metain#orma)es so(re os
06rti%es e arestas" As metasin#orma)es so(re uma rela)*o %om$reendem sua
%ardinalidade1 a de#ini)*o de seus atri(utos e da res$e%ti0a 8uantidade de 0alores
distintos1 al6m de sua lo%aliza)*o" Cada $redi%ado tem uma estimati0a de seu #ator de
seleti0idade" A seleti0idade 6 uma estimati0a da 8uantidade de tu$las 8ue ir*o atender ao
$redi%ado" As o$era)es lPgi%as em$regadas s*oQ sele()o" %un()o" pro%e()o" produto
cartesiano" E as o$era)es #+si%as s*oQscan" send" materiali*e eread"
A determina)*o do $lano Ptimo de e&e%u)*o 6 (aseada no modelo de %usto e em um
algoritmo e&austi0o de $ermuta)*o na ordem de $redi%ados %aros" O modelo de %usto
%onsidera a e&e%u)*o dos o$eradores em $aralelo1 segundo o modelo de #lu&o de dados"
m 3EC 6 e&$resso %omo uma se8H'n%ia de o$era)es e&e%ut0eis" Cada o$era)*o
a$resenta um %usto $rP$rio 8ue de$endente de $ar9metro e&terno tais %omoQ a ta&a de
trans#er'n%ia da rede1 de entrada1 de sa+da1 et%"1 taman-o da entrada1 %ardinalidade da
rela)*o1 nmero de 0alores distintos e/ou taman-o da tu$la e o %usto de e&e%u)*o do
algoritmo asso%iado"
O %usto de um $lano de e&e%u)*o de %onsulta %om$leta 6 %om$utado %onsiderando
se as estrat6gias $aralelas1 inde$endente e de #lu&o de dados"
A ta(ela 4 mostra e&em$los de e&$resses de %usto $ara das o$era)es lPgi%as"
!2
Fi0$ra "= Ar7$i#(#$ra 4om os Com6on(n#(s R(mo#os
-
8/10/2019 Otimizador de consulta SQL
55/109
O$era)*o E&$ress*o do CustoS%an Taman-o7tu$la %ard %usto7s%anSend =taman-o7tu$la %ard> / %usto7trans#eren%iaRead Taman-o7tu$la %ard %usto7read3ro:e%t 5un)*o 2=%ard4 %ard2 > %usto7$redi%ado
OndeQ
Taman-o7tu$la 6 a 8uantidade de (hte do atri(utoJ
CardQ 6 a %ardinalidade da ta(ela1 ou se:a1 6 a 8uantidade de tu$la 8ue e&iste na ta(elaJ
%usto7s%anQ 6 o %usto da o$era)*o de s%anJ
%usto7trans#eren%iaQ 6 o %usto de trans#er'n%ia da tu$laJ
%usto7readQ 6 o %usto de leitura da tu$laJ %usto7$redi%adoQ 6 o %usto do $redi%ado"
A ta(ela 2 mostra e&em$los de 0alores de %ustos das o$era)es #+si%as"
Des%ri)*o Valor Ta&a de trans#er'n%ia na rede X (/sTa&a de trans#er'n%ia em dis%o 4 M,/sA%esso . memPria 4M,/s
2&> Dia0rama d( C/ass( do O#imi1ador
A #igura 4K a$resenta um resumo do diagrama de %lasses do Otimizador de Consulta
8ue se en%ontra no tra(al-o de ?3ORTO1 24@" A$enas as %lasses mais im$ortantes e 8ue
ser*o ne%essrias ao otimizador do CoDIMS est*o a8ui a$resentadas" As demais %lasses
est*o mostradas no a$'ndi%e"
!;
Ta*(/a " Ex6r(ss?(s d( C$s#o das O6(ra%?(s L;0i4as
Ta*(/a ) C$s#o das o6(ra%?(s 5
-
8/10/2019 Otimizador de consulta SQL
56/109
cdDiagramadeClasse
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,))%T*#- )+*!n EA'.(Un)"*+,)
Otimizador
GrafoConsulta
Transporte
PredicadoEvalLista
Projeto
ProjetoLista
Site
SiteLista
Relacao
PrimPerm
AtriutoLista
E!ecutePlano
RelacaoLista
PredicadoEvalListaLista
ProcessaProjeto
PredicadoLista
"alidation
ArestaLista
PredicadoLista
"erticeLista
AtriutoLista#as$
cac$e
E!ecuteRelacao
C/ass( O#imi1ador
A %lasse otimizador re%e(e o gra#o de %onsulta do Rees%ritor 8ue est no #ormato
ML" E atra06s do gra#o re%e(ido o Otimizador gera todos os $lanos $oss+0eis1 %om o
m6todo generate3redi%ateE0alutionSe8uen%e=>" Como a otimiza)*o 6 (aseado no %usto1 o
Otimizador e&e%uta todos os $lanos usando o m6todo E&e%ute3lano
generateE&e%3lan=3redi%ateE0alList>1 e %om o au&ilio da %lasse E&e%ute3lano ele o(tem o
!Q Retorna o mel-or $lano gerado na otimiza)*o"
generatE&e%3lan=3redi%adoE0alList>Q E&e%uta todos os $lanos 8ue #oram gerados"
generate3redi%ateE0alutionSe8uen%e=>QGera todos os $lanos atra06s do $lano 8ue #oi
$assado $elo Rees%ritor"
generate3ermution=3redi%ateE0alLista> Q Gera as $ermuta)es"
gete&t=3redi%adoE0alLista1 int> Q ,us%a o $rP&imo $redi%ado de a%ordo %om a $osi)*o"
$rint3ell=3redi%adoE0alListaLista>Q Im$rime os $redi%ados"
$rintg=>Q Im$rime o gra#o de %onsulta"
!
-
8/10/2019 Otimizador de consulta SQL
59/109
C/ass( Gra5oCons$/#a
A %lasse Gra#oConsulta 0eri#i%a se o gra#o 8ue #oi $assado $ara o Otimizador est
%om todos os atri(utos %om$letos" Se o gra#o esti0er in%om$leto ou errado ele 6 re:eitado"Tendo um gra#o %om$leto1 essa %lasse (us%a $elos 0alores dos gra#o" Com o m6todos
getSite1 ele 0eri#i%a a 0era%idade do site1 %om o m6todo getAresta 6 0eri#i%ado se as
arestas esta %orretamente ligadas1 e o m6todo get3redi%ado #az a anlise dos $redi%ados
0eri#i%ando se eles s*o realmente ne%essrio e se n*o est #altando algum $redi%ado1 : o
m6todo get3ro:eto 0eri#i%a as $ro:e)es e o m6todos getRela%ao 0eri#i%a se as rela)es s*o
%ongruentes" A %lasse est mostrada na #igura 24"
!X
Fi0$ra )" C/ass( Gra5oCons$/#a
-
8/10/2019 Otimizador de consulta SQL
60/109
Atri(utos da Classe Otimizador
arestaListaQ o(:eto da %lasse ArestaLista 8ue %ont6m a lista de arestaJ
$redi%adoListaQ o(:eto da %lasse 3redi%adoLista 8ue %ont6m a lista de $redi%adoJ
rela)*oListaQ o(:eto da %lasse Rela)*oLista 8ue %ont6m a lista de rela)*oJ
0erti%eListaQ o(:eto da %lasse Verti%eLista 8ue %ont6m a lista de 06rti%eJ
atri(utoListaQ o(:eto da %lasse Atri(utoLista 8ue %ont6m a lista de atri(utoJ
siteListaQ o(:eto da %lasse SiteLista 8ue %ont6m a lista de siteJ
atri(utoListaas-Q o(:eto da %lasse Atri(utoListaas- 8ue %ont6m a lista de atri(uto em
uma ta(ela -as-"
M6todos da %lasse Gra#oConsulta
getSite=3rogramIn#oode1 int>Q O(t6m um site de a%ordo %om a $osi)*o"
getAresta=3rogramIn#oode1 int>Q O(t6m uma aresta de a%ordo %om a $osi)*o"
get3redi%ado=3rogramIn#oode1 int>Q O(t6m um $redi%ado de a%ordo %om a $osi)*o"
get3ro:eto=3rogramIn#oode1 int>Q O(t6m um $ro:eto de a%ordo %om a $osi)*o"
getRela%ao=3rogramIn#oode1 int>Q O(t6m uma rela)*o de a%ordo %om a $osi)*o"
2&9 Dia0rama d( S(78n4ia
A #a%-ada do otimizador re%e(e o gra#
top related