AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU
-
Upload
preston-mccoy -
Category
Documents
-
view
23 -
download
0
description
Transcript of AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU
![Page 1: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/1.jpg)
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
![Page 2: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/2.jpg)
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
![Page 3: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/3.jpg)
Esquema Geral do Otimizador
SQL Parser Consulta SQL
usuário
Coleção de blocos simplesB1, B2, ...., Bn
Otimizador
Melhor Plano de execução
Bloco SQL simples
Plano canônico
Cria planos alternativos
Planos alternativos
Estima custos
Melhor Plano de execução
Transforma em Algebra
![Page 4: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/4.jpg)
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
![Page 5: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/5.jpg)
Bloco simples SELECT <lista atributos>
FROM <lista relações>
WHERE <condição em FNC>
GROUP BY
HAVING
![Page 6: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/6.jpg)
ExemploR(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.
![Page 7: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/7.jpg)
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
![Page 8: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/8.jpg)
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
![Page 9: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/9.jpg)
Bloco SQL Expressão algébrica
ΠA,B,..., MIN (C)
Having .... Group by ...
σ condições do WHERE
R1 X R2 X ... X Rn
Projeção sobre os atributos do SELECT
Seleção sobre as condições do WHERE
Produto Cartesiano das relações do FROM
![Page 10: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/10.jpg)
Plano de Execução “Canônico”ΠA,B,...,Min(C)
σ condições do WHERE
R1 X R2 X ... X Rn
Having .... Group by A
ΠA,B,...,C
σ
ΠA,B,...,C
X
R1 R2 Rn
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
![Page 11: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/11.jpg)
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.
![Page 12: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/12.jpg)
Exemplo
σ
X
R S
Π Projeção com ordenação
Seleção usando indice B+tree no atributo A
Hash Join
σ
X
R S
Projeção com ordenação
Sort Merge Join
Π
Seleção usando indice Hash no atributo B
![Page 13: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/13.jpg)
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
![Page 14: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/14.jpg)
ExemploR(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 ?
![Page 15: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/15.jpg)
Plano 1Select R.Day
From R, B
Where R.Bid = B.Bid AND
B.Color = ‘Vermelho’
σcolor = ‘vermelho’
R B
ΠDay
![Page 16: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/16.jpg)
Plano 2 (otimizado)
Select R.Day
From R
Where R.Bid IN
( Select B.Bid
From B
Where B.Color = ‘Vermelho’ )
σcolor = ‘vermelho’
R
ΠDay
B
ΠBid
![Page 17: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/17.jpg)
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.
![Page 18: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/18.jpg)
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
![Page 19: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/19.jpg)
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)
![Page 20: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/20.jpg)
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.
![Page 21: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/21.jpg)
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
![Page 22: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/22.jpg)
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
![Page 23: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/23.jpg)
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 ^c3c1 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)
![Page 24: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/24.jpg)
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.
![Page 25: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/25.jpg)
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
![Page 26: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/26.jpg)
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
![Page 27: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/27.jpg)
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
![Page 28: AULA 19 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU](https://reader035.fdocumentos.tips/reader035/viewer/2022062301/56813521550346895d9c87cf/html5/thumbnails/28.jpg)
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