Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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.