1 / 28

AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU

Otimização de Consultas em SQL Parte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional. AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU Sistemas de Banco de Dados - 2012-2. Principais etapas do processo.

Download Presentation

AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Otimização de Consultas em SQLParte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU Sistemas de Banco de Dados - 2012-2

  2. Principais etapas do processo • Transformar os blocos simples SQL em expressões da álgebra relacional • Enumerar os possíveis planos de execução da expressão da álgebra relacional correspondendo à consulta • Estimar o custo de cada plano • Escolher o plano com menor custo

  3. Esquema Geral do Otimizador Bloco SQL simples usuário Consulta SQL SQL Parser Transforma em Algebra Coleção de blocos simples B1, B2, ...., Bn Plano canônico Cria planos alternativos Otimizador Planos alternativos Estima custos Melhor Plano de execução Melhor Plano de execução

  4. Decompor consulta em blocos simples • Um bloco SQL simples é um comando sem subconsultas aninhadas, onde aparece • somente um SELECT, • somente um FROM • no máximo um WHERE (em FNC) • no máximo um GROUP BY • no máximo um HAVING

  5. Bloco simples • SELECT <lista atributos> FROM <lista relações> WHERE <condição em FNC> GROUP BY HAVING

  6. Exemplo R(sid,bid,day,rname) : RESERVA S(sid,sname,rating,age) : SAILORS B(bid,bname, color) : BOAT • Para cada sailor com o mais alto status (rating) e que fez pelo menos 2 reservas de barcos vermelhos, dê seu identificador e a data mais recente em que fez reserva de barco vermelho.

  7. Exemplo (continuação) SELECT DISTINCT S.sid, Min (R.day) FROM Sailors S, Reservas R, Boats B WHERE S.sid = R.sid AND R.bid = B.bid AND B.color = ‘red’ AND S.rating = (SELECT MAX (S2.rating) FROM Sailors S2 ) GROUP BY S.sid HAVING COUNT (*) > 1

  8. Exemplo (continuação) • Bloco 1 : bloco interno SELECT MAX (S2.rating) FROM Sailors S2 Resultado : Relação temporária T(A) • Bloco 2 : bloco externo SELECT DISTINCT S.sid, Min (R.day) FROM Sailors S, Reservas R, Boats B, T WHERE S.sid = R.sid AND R.bid = B.bid AND B.color = ‘red’ AND S.rating = T.A GROUP BY S.sid HAVING COUNT (*) > 1

  9. Bloco SQL  Expressão algébrica ΠA,B,..., MIN (C) Projeção sobre os atributos do SELECT Having .... Group by ... σcondições do WHERE Seleção sobre as condições do WHERE R1 X R2 X ... X Rn Produto Cartesiano das relações do FROM

  10. ΠA,B,...,Min(C) Plano de Execução “Canônico” ΠA,B,...,C ΠA,B,...,C Having .... Group by A σcondições do WHERE σ R1 X R2 X ... X Rn X • Resultado R é ordenado • O GROUP BY é executado • sobre o resultado R ordenado. • O HAVING é aplicado para eliminar certos grupos. • Funções de agregação são executadas sobre os grupos finais R1 R2 Rn

  11. O que é um plano de execução ? • Plano de execução correspondente à uma expressão algébrica E • Sequência de operações equivalente à expressão E, isto é, produzindo o mesmo resultado que E. • Para cada operação da sequência (projeção, seleção, junção), um algoritmo é especificado para implementar tal operação.

  12. Exemplo Π Projeção com ordenação Π Projeção com ordenação σ Seleção usando indice B+tree no atributo A Seleção usando indice Hash no atributo B σ X Hash Join X Sort Merge Join R S R S

  13. Planos Alternativos • Transformar a expressão algébrica “canônica” (Πσ x ) em outra expressão equivalente. • Utilizar algoritmos alternativos para implementar as operações algébricas

  14. Exemplo R(sid,bid,day,rname) : RESERVA S(sid,sname,rating,age) : SAILORS B(bid,bname, color) : BOAT • Quais os dias em que foram reservados barcos vermelhos ?

  15. Select R.Day From R, B Where R.Bid = B.Bid AND B.Color = ‘Vermelho’ Plano 1 ΠDay σcolor = ‘vermelho’ R B

  16. Select R.Day From R Where R.Bid IN ( Select B.Bid From B Where B.Color = ‘Vermelho’ ) Plano 2 (otimizado) ΠDay R ΠBid σcolor = ‘vermelho’ B

  17. Equivalências de Expressões Algébricas • Seleção • σc1 ^ c2 ^ ... ^ cn (R) = σc1 (σc2 (... (σcn (R))...) Vantagens: Permite realizar uma única seleção, verificando todas as condições simultaneamente, em vez de se executar n seleções separadamente em sequência. • σc1 (σc2 (R) ) = σc2 (σc1 (R) ) As condições podem ser executadas em qualquer ordem. Vantagem: executar a condição mais seletiva primeiro.

  18. Equivalências de Expressões Algébricas • Projeção • ΠX1 (R) = ΠX1 (ΠX2 (... (ΠXn (R))...) Onde • cada Xi é um conjunto de atributos • Xi está contido em Xi+1 • Exemplo: ΠA (R) = ΠA (ΠAB (ΠABC (R))) Vantagem: Reduz o número de execuções do algoritmo de projeção

  19. Equivalências de Expressões Algébricas • Produto Cartesiano e Junção • Associativa R (S T) = (R S) T R (S T) = (R S) T • Comutativa (R S) = (S R) (R S) = (S R)

  20. Exercicio • Mostre que R (S T) = (T R) S • Conclusão: • A junção entre diversas relações pode ser feita em qualquer ordem. • Propriedade importante na geração de planos alternativos.

  21. Equivalências de Expressões Algébricas • Seleção e Projeção • ΠXσc (R) = σcΠX (R) Onde todos os atributos aparecendo na condição c estão contidos em X • Exercício: Mostrar que isto não é verdade caso existam atributos de c que não aparecem em X

  22. Equivalências de Expressões Algébricas • Seleção e Junção • R S = σc (R S) • σc (R S) = (σc R S) • se todos os atributos de c são atributos de R e não de S • σc (R S) = (σc R S) • se todos os atributos de c são atributos de R e não de S Vantagens: junção pode ser feita entre relações menores. c

  23. Exercícios • Dê um exemplo para mostrar que as propriedades não são válidas caso c contenha atributos de ambas as relações R e S. • Seja c = c1 ^c2 ^c3 c1 envolve atributos de R e S c2 envolve atributos somente de R c3 envolve atributos somente de S Mostre que: σc (R S) = σc1(σc2 R σc3 S)

  24. Equivalências de Expressões Algébricas • Projeção e Produto Cartesiano • ΠX (R S) = (ΠY R ΠZ S) • Y = atributos de X que aparecem em R • Z = atributos de X que aparecem em S • Exemplo: ΠAB (R S) = (ΠA R ΠB S) • onde R(AC) e S(BC) • Vantagem: Produto cartesiano pode ser feito entre relações menores.

  25. Equivalências de Expressões Algébricas • Projeção e Junção • ΠX (R S) = (ΠY R ΠZ S) • Os atributos envolvidos na condição de junção c devem aparecer em X • Y = atributos de X que aparecem em R • Z = atributos de X que aparecem em S • Exemplo : R(ACD), S(BEC), X = {A, B, C}, condição de junção : C = 3 ΠABC (R S) = (ΠA R ΠB S) c c c c

  26. Exercicio • Dê um exemplo para mostrar que a propriedade não é válida caso Y contenha atributos que não apareçam em X. • Dê um exemplo para mostrar que a propriedade não é válida caso a condição de junção c contenha atributos que não estão em X

  27. Equivalências de Expressões Algébricas • Distribuição Generalizada (Projeção e Junção) • ΠX (R S) = ΠX (ΠY R ΠZ S) • Y = atributos de R que aparecem em X ou c • Z = atributos de S que aparecem em Y ou c • Exemplo : R(ACD), S(BEC), X = {A, B}, condição de junção : C = 3 ΠAB (R S) = ΠAB (ΠAC R ΠBC S) c c c c

  28. Equivalências de Expressões Algébricas • União, Intersecção: • Associativa • Comutativa • Seleção e Projeção podem comutar com União, Intersecção e Diferença

More Related