Você está na página 1de 23

Banco de Dados I Unidade 6

Processamento de Consultas
Otimizao Lgica

6. Processamento de Consultas
6.1 Introduo
Linguagens de alto nvel (ex.SQL) podem
ter consultas com alto tempo de
processamento
Existem vrias maneiras de escrever uma
query.
Soluo: usar um otimizador de consultas para
escolher a melhor forma, dentro das suas
possibilidades, de executar uma consulta

6.1 Introduo
O sistema gera um cdigo otimizado (sem
necessariamente ser o melhor possvel)
O processo de otimizao leva em considerao:
1. A teoria da lgebra Relacional
2. Informaes sobre:
tamanhos de tabelas
seletividade de ndices
agrupamento de dados

6.1 Introduo
Query em ling. de alto nvel (SQL)
Scanner
e Parser
Forma intermediria da query
Otimizador
Consultas
Plano de execuo
Runtime
DB Processor
Cdigo para executar a query
Scanner
e Parser

Resultado da Query

6.1 Introduo
Quais operaes levam mais tempo para
executar?
Produto Cartesiano e Juno

Ex.: A influncia do tamanho de uma tabela


no tempo de resposta a uma consulta. Sejam
A e B duas relaes, como podemos
implementar A X B? Qual o custo de cada
soluo?

6.1 Introduo
Soluo 1: Associar cada tupla de A com
cada tupla de B (cada tupla de B lida
tamanho de A vezes)
Outer Loop A
Inner Loop B

6.1 Introduo
Soluo 2: Colocar o mximo de blocos de
A na memria e processar estas tuplas para
cada tupla de B
=> Reduo de leituras de cada bloco B =
nmero de tuplas de A na memria

6.1 Introduo
Estratgia X:
Outer Loop A

Estratgia Y
Outer Loop B

Inner Loop B

Inner Loop A

6.1 Introduo
Nmero de acessos (leituras) a blocos:
Estratgia X:
nA/bA (1 +

nB
)
(m-1)*bB

<=>

nA/bA

Estratgia Y:
nB/bB (1 +

nA
) <=>
(m-1)*bA

nB/bB

ni = tamanho da relao i
bi = fator de bloco de i
m = tamanho da memria principal (em blocos), geralmente um
nmero muito grande

6.1 Introdup
Otimizao:
Outer Loop: Se nA/bA < nb/bB
ento A
seno B
Inner loop: Se A Outer loop
ento B
seno A

Ex.: nA = 5.000, bA = 5; nB = 10.000, bB = 5 => a


extratgia X pode responder query na metade do
tempo levado pela estratgia Y.

6.1 Introduo
Ex2. A importncia de se reduzir o tamanho das
tabelas intermedirias
Sejam A(a1,a2) e B(b1,b2) esquemas relacionais
Select a.a1
from A a, B b
where a.a1 = valor and a.a2 = b.b1

6.1 Introduo
Estratgia 1:
1) Produto Cartesiano
2) Seleo
3) Projeo
=> Completamente invivel! S o produto gera um
resultado intermedirio de tamanho 5.000 x 10.000
= 50.000.000!

6.1 Introduo
Estratgia 2:
1) Seleo de a1 = valor
=> nB pequeno, normalmente cabe na memria
nmero de acessos = 2.000 = nB/bB
2) (A X B) a.a2 = b.b1
=> nmero de acessos = 1.000 = nA/bA
3) Projees so feitas em cada passo
Nmero total de acessos = 3.000 (razovel)

6.1 Introduo
Concluso:
Operaes que reduzem tabelas:
Seleo
Projeo

6.1 Introduo
Estratgias gerais de Otimizao:
1. Execute selees o mais rpido possvel
=> reduz o tamanho das tabelas (resultados intermedirios)
2. Combine, quando possvel, uma seleo com o produto
cartesiano anterior formando uma juno
3. Combine sequncias de operaes unrias (seleo e projeo)
4. Procure subexpresses comuns e guarde-as caso seja mais
eficiente l-las do que reprocess-las

6.1 Introduo
Estratgias gerais de Otimizao:
5. Pr-processar arquivos apropriadamente (SORT e INDEX)
Por exemplo, quando no for vivel manter um ndice
permanente pode-se criar ndices temporrios para processar
a query
6. Avaliar opes antes de executar:
- tamanho das tabelas
- tamanho dos blocos
- existncia de ndices
- existncia de tabela ordenada, etc.

6.2 Tcnicas de Otimizao


Tipos de Otimizao:
Lgica
Fsica

6.2.1 Otimizao Lgica


Tambm conhecida como otimizao
algbrica e otimizao heurstica
Faz manipulaes algbricas, usando as leis
da lgebra Relacional, sem considerar o
modo como as relaes esto armazenadas,
visando reduzir os tamanhos dos resultados
intermedirios.

6.2.1 Leis Algbricas


1. Produto Cartesiano e Juno so comutativos: se E1 e E2 so
expresses relacionais e F uma condio sobre atributos de E1 ou
E2, ento:
E1 X E2 = E2 X E1
E1 |X|F E2 = E2 |X|F E1
2. Produto cartesiano e juno so associativos
(E1 X E2) X E3 = E1 X (E2 X E3)
(E1 |X| E2) |X|F E3 = E1 |X|F (E2 |x| E3)

6.2.1 Leis Algbricas


3. Cascata de Projees
A1,,An( B1,,Bm(E)) = A1,An(E) com
A1, , An B1, , Bm
4. Cascata de Selees
F1 (F2 (E)) = F1 ^ F2 (E),
e como F1 ^ F2 = F2 ^ F1, ento
F1 (F2 (E)) = F2 (F1 (E))

6.2.1 Leis Algbricas


5. Comutatividade de selees e projees
Se a condio F envolve somente atributos A1, , An ento:
A1,,An(F (E)) = F ( A1,,An(E))
Generalizando, se F tambm envolve atributos B1, , Bm, que
no esto entre A1, , An, ento:
A1,,An(F (E)) = A1,,An(F
( A1,,An ,B1,, Bm(E))

6.2.1 Leis Algbricas


6. Comutatividade de seleo e produto cartesiano: se todos os
atributos em F so s atributos de E1, ento:
F (E1 X E2) = F (E1) X E2
Se F da forma F1 ^ F2, onde F1 s tem atributos em E1 e F2
s tem atributos em E2, usando as regras (1), (4) e (6) temos:
F (E1 X E2) = F1 (E1) X F2 (E2)
Se F1 tem somente atributos de E1 mas F2 tem atributos de E1
e E2, temos:
F (E1 X E2) = F2 ( F1 (E1) X E2)

6.2.1 Leis Algbricas


7. Comutatividade de seleo e unio
F (E1 U E2) = F (E1) U F (E2)
8. Comutatividade de seleo e diferena
F (E1 - E2) = F (E1) - F (E2)

Você também pode gostar