28
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

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

Embed Size (px)

Citation preview

Page 1: 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

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: 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

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: 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

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: 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

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: 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

Bloco simples SELECT <lista atributos>

FROM <lista relações>

WHERE <condição em FNC>

GROUP BY

HAVING

Page 6: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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: 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

Plano 1Select R.Day

From R, B

Where R.Bid = B.Bid AND

B.Color = ‘Vermelho’

σcolor = ‘vermelho’

R B

ΠDay

Page 16: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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: 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

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