Otimizador de consulta SQL

Embed Size (px)

Citation preview

  • 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#