A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Otimização de Consultas em SQL Planos de Execução

Apresentações semelhantes


Apresentação em tema: "Otimização de Consultas em SQL Planos de Execução"— Transcrição da apresentação:

1 Otimização de Consultas em SQL Planos de Execução
AULA 25 Profa. Sandra de Amo GBC053 – BCC

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 Plano de Execução “Canônico”
ΠA,B,...,Min(C) Π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 13

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 ? 14

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

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


Carregar ppt "Otimização de Consultas em SQL Planos de Execução"

Apresentações semelhantes


Anúncios Google