Escolar Documentos
Profissional Documentos
Cultura Documentos
• Introdução
• Enumerar possíveis planos
– traduzir consultas SQL em álgebra relacional
Otimização de consultas – equivalências em álgebra relacional
• Avaliando um plano
João B. Rocha-Junior
joao@uefs.br
• Estimando o custo de um plano
• Resumo
Departamento de Ciências Exatas
Universidade Estadual de Feira de Santana
0 1
Introdução SQL
Álgebra
relacional
Analisador Normalizador
• Existem diferentes formas de processar uma
catálogo Álgebra
consulta relacional
Consulta inválida
– cada uma dessas forma é chamada de plano de ou não autorizada
execução
dados Otimizador
estatísticos
2 3
sid=sid
Reserves Sailors
4 5
1
Agenda Consultas SQL vs. álgebra relacional
• Introdução • Toda consulta SQL pode ser expressada através em
álgebra relacional
• Enumerar possíveis planos
– o SELECT corresponde a projeção (∏)
– traduzir consultas SQL em álgebra relacional
– o WHERE corresponde a restrição (σ)
– equivalências em álgebra relacional – o FROM corresponde ao produto cartesiano (×)
• Avaliando um plano – as demais clausulas possuem operadores próprios
• Estimando o custo de um plano SELECT S.sname
FROM Reserves R, Sailors S
• Resumo WHERE R.sid=S.sid AND
R.bid=100 AND S.rating>5
∏sname(σ bid=100 ∧ rating > 5 (Reserves sid=sid Sailors))
6 7
– para a mesma entrada produzem a mesma saída • útil quando apenas parte da condição é atendida, mover
apenas algumas condições
• A equivalência de expressões é um passo – comutativa
importante para identificar planos alternativos σ c1(σ c2(R)) ≡ σ c2(σ c1(R))
– colocar uma restrição antes de um join pode • a ordem dos operadores não altera o produto
8 9
10 11
2
Plano avaliado inclui métodos de acesso
Agenda SELECT S.sname
FROM Reserves R, Sailors S
• Introdução WHERE R.sid=S.sid AND
R.bid=100 AND S.rating>5
• Enumerar possíveis planos
– traduzir consultas SQL em álgebra relacional ∏sname(σ bid=100 ∧ rating > 5 (Reserves sid=sid Sailors))
• Resumo
sid=sid sid=sid (nested loop)
12 13
14 15
16 17
3
Estimando o tamanho dos resultados
Agenda
• Como os operadores estão encadeados
• Introdução – estimar a quantidade de dados que será produzida por
cada operador é fundamental
• Enumerar possíveis planos
SELECT lista de atributos
– traduzir consultas SQL em álgebra relacional FROM lista de relações
WHERE termo1∧ termo2 ∧… ∧ termon
– equivalências em álgebra relacional
• Por exemplo, nesta consulta
• Avaliando um plano – o número máximo de tuplas no resultado é dado pelo
• Estimando o custo de um plano cartesiano sobre a lista de relações
– cada termo da cláusula WHERE reduz esse número
• Resumo
– fator de redução: é uma taxa que indica o quanto cada
termo pode reduzir o tamanho da entrada (ex. cartesiano)
• considera apenas o termo isoladamente e a entrada
Otimização de consultas João B. Rocha-Junior 18 Otimização de consultas João B. Rocha-Junior 19
18 19
20 21
Exemplo: calculando o custo em termos de I/Os Exemplo: calculando o custo em termos de I/Os
• Custo= 1000 + 1000*500 = 501.000 • Custo= 500 + 250*1000= 250.500
Reserves (sid, bid, day, rname) ∏ Reserves (sid, bid, day, rname) ∏
Sailors (sid, sname, rating, age) (on-the-fly) Sailors (sid, sname, rating, age) (on-the-fly)
sname sname
Não tem
σ
custo de I/O σ
bid=100 (on-the-fly)
bid=100 rating > 5 (on-the-fly)
(nested loop)
(nested loop) s 10
00
ge sid=sid pa
10
00 Redução de 50% 0 pa ge
g es *5 0 25 s
a sid=sid
0 0p 0p
σ rating > 5 Reserves (file scan)
10
(file scan) (file scan)
500 p
Reserves Sailors
22 23
4
Exemplo: calculando o custo em termos de I/O Exemplo: calculando o custo em termos de I/Os
• Custo= 1000 + 10*500= 6000 • Custo= 500+1000 + 250*10= 4000
∏ (on-the-fly) Reserves (sid, bid, day, rname)
sname
Sailors (sid, sname, rating, age)
Reserves (sid, bid, day, rname) ∏
Sailors (sid, sname, rating, age) sname (on-the-fly)
σ rating > 5
(nested loop)
(nested loop) 25
es 0 *1
10 ag sid=sid 0p
sid=sid *5 0 Redução de 50% 0p
p 0p 25
Redução de 99% 10 σ bid=100 (on-the-fly)
σ rating > 5
σ bid=100 (file scan)
1000 p
(on-the-fly) Sailors
500 p
1000 p
(file scan) Sailors Reserves (file scan)
24 25
250p
10p
26 27
Referências
Resumo
• Raghu Ramakrishnan and Johannes Gehrke.
• Existem diversas formas de executar uma Database Management Systems. Third Edition,
uma consulta McGraw-Hill, 2003.
• Passos de um otimizador
– enumerar planos equivalentes
• utilizando equivalência da álgebra relacional
– computar o custo desses planos
• utilizando índices e metadados
– escolher planos com menor custo
28 29
5
Otimização de consultas
João B. Rocha-Junior
joao@uefs.br
30