Upload
quinta
View
44
Download
0
Embed Size (px)
DESCRIPTION
Otimização de Consultas em SQL Parte I - Planos de Execução. AULA 24 – Parte I Profa. Sandra de Amo GBC053 – BCC. Principais etapas do processo. Transformar os blocos simples SQL em expressões da álgebra relacional - PowerPoint PPT Presentation
Citation preview
Otimização de Consultas em SQL Parte I - Planos de Execução
AULA 24 – Parte IProfa. Sandra de Amo
GBC053 – BCC
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
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
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
Bloco simples SELECT <lista atributos>
FROM <lista relações>
WHERE <condição em FNC>
GROUP BY
HAVING
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.
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
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
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
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
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.
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
O que é plano de execução canônico? É o plano de execução correspondente
exatamente à consulta SQL recebida pelo processador de consultas.
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 ?
Plano 1= plano canônico da consulta
Select R.Day
From R, B
Where R.Bid = B.Bid AND
B.Color = ‘Vermelho’
σcolor = ‘vermelho’
R B
ΠDay
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
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
Otimização de Consultas em SQL Equivalência de Expressões da Algebra
Relacional
AULA 24 – Parte IIProfa. Sandra de Amo
GBC053 – BCC
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.
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
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)
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
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
ExercícioDê 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.
R SR S
A=R S
A=σ B=b1( )
R) σ B=b1(S
A=R) σ B=b1(