BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

123
BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM

Transcript of BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Page 1: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

BD I / 2013-02Processamento de

Consultas

Prof. Altigran Soares da SilvaIComp/UFAM

Page 2: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Processamento de Consultas

Q Plano de execução da consulta

Foco: Sistemas relacionais

Outros?

Page 3: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Exemplo

Select B,D From R,S Where R.A = “c” and S.E = 2 and R.C=S.C

Page 4: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

R A B C S C D E

a 1 10 10 x 2

b 1 20 20 y 2

c 2 10 30 z 2

d 2 35 40 x 1

e 3 45 50 y 3

Resultado B D2 x

Page 5: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

• Como executar a consulta?

- Fazer produto cartesiano- Selecionar as tuplas- Fazer projeção

Uma idea

Page 6: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

RXS R.A R.B R.C S.C S.D S.E

a 1 10 10 x 2

a 1 10 20 y 2 . .

C 2 10 10 x 2 . .

Uma resposta ..

Page 7: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Álgebra Relacional – pode ser usada para descrever planos de execuçãoEx: Plano I

B,D

R.A=“c” S.E=2 R.C=S.C

XR S

OU: B,D [ R.A=“c” S.E=2 R.C = S.C (RXS)]

Page 8: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Outra ideia:

B,D

R.A = “c” S.E = 2

R S

Plano II

Junção natural

Page 9: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

R SA B C (R) (S) C D Ea 1 10 A B C C D E 10 x 2b 1 20 c 2 10 10 x 2 20 y 2c 2 10 20 y 2 30 z 2d 2 35 30 z 2 40 x 1e 3 45 50 y 3

Page 10: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Plano III

Usar os índices sobre R.A e S.C

(1) Usar o indíce sobre R.A para selecionar as tuplas onde R.A = “c”

(2) Para cada valor de R.C, usar o índice sobre S.C para achar as tuplas de S

(3) Eliminar as tuplas de S onde S.E 2(4) Aplicar o Join sobre as tuplas de R e S

e projetar os atributos B e D

Page 11: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

R SA B C C D Ea 1 10 10 x 2b 1 20 20 y 2c 2 10 30 z 2d 2 35 40 x 1e 3 45 50 y 3

A CI1 I2

=“c”

<c,2,10> <10,x,2>E=2?

saida: <2,x>

prox. tupla:<c,7,15>

Page 12: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Otimização de Consulta

Determinar qual o “melhor” entre os vários possíveis planos de execução de uma consulta

Page 13: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

parse

convert

regras

Est. tamanho

Comp. planos físicos Custos estimados

melhor

execução

{P1,P2,…..}

{(P1,C1),(P2,C2)...}

Pi

resposta

Consulta SQL

parse tree

plano lógico p/ a consulta

Plano “melhorado”

Plano + tamanho

estatísticas

Page 14: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Exemplo: Consulta SQL

SELECT titleFROM StarsInWHERE starName IN (

SELECT nameFROM MovieStarWHERE birthdate LIKE ‘%1960’

);

Encontrar os filmes cujos atores nasceram em 1960

Page 15: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Examplo: Parse Tree<Query>

<SFW>

SELECT <SelList> FROM <FromList> WHERE <Condition>

<Attribute> <RelName> <Tuple> IN <Query>

title StarsIn <Attribute> ( <Query> )

starName <SFW>

SELECT <SelList> FROM <FromList> WHERE <Condition>

<Attribute> <RelName> <Attribute> LIKE <Pattern>

name MovieStar birthDate ‘%1960’

Page 16: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Examplo: Álgebra Relacional

title

StarsIn <condition>

<tuple> IN name

<attribute> birthdate LIKE ‘%1960’

starName MovieStar

Page 17: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Examplo: Plano lógico da consulta

title

starName=name

StarsIn name

birthdate LIKE ‘%1960’

MovieStarAplicando regra para condições “IN”

Page 18: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Examplo: Plano Melhorado

title

starName=name

StarsIn name

birthdate LIKE ‘%1960’

MovieStar

Page 19: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Examplo: Estimado tamanhos de resultados

tamanho estimado

StarsIn

MovieStar

Page 20: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Examplo: Possível plano físico

Parâmetros: ordem da junção,

tamanho da mem, atributos,...

Hash join

SEQ scan index scan Paramêtro:Condiçaõ deseleção,...

StarsIn MovieStar

Page 21: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Example: Custo estimado

L.Q.P

P1 P2 …. Pn

C1 C2 …. Cn

Escolha o melhor!

Page 22: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Estrutura desta Unidade

Capitulo 66.1 Álgebra para consultas [“bags” vs

sets]- Seleção, projeção, junção, … - Elminação de duplicatas, agrupamento, ordenação

6.2 Operadores físicos- Varredura (Scan), ordenação, …

6.3-6.10 Implementação de operadores + estimativa de curstos

Page 23: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Capítulo 77.1 Parsing7.2 Leis da Álgebra7.3 Parse tree -> Plano lógico de

consulta 7.4 Estimativa do tamanho de resultados7.5-7 Otimização baseada em custos

Page 24: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Estudo do Livro Texto - Capítulos 6,7

Opcionais: 6.8, 6.9, 6.10, 7.6, 7.7 Eliminação de duplicadas, agrupamento e

agregação

Page 25: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Otimização de consultas - Níveis

Nível de álgebra relacional Nível do plano de consulta detalhado

Estimativa de custos Sem índices Com índices

Gerar e comparar planos

Page 26: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Otimização em Álgebra Relacional Regras de transformação

Preservando equivalência

O que são boas transformações?

Page 27: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Leis Associativas e Comutativas Produtos

R x S = S x R (R x S) x T = R x (S x T)

Junções Naturais R S = S R⨝ ⨝ (R S) T = R (S T)⨝ ⨝ ⨝ ⨝

Uniões e Intersecções R U S = S U R R U (S U T) = (R U S) U T

Page 28: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Junções Teta Comutativa

R ⨝C S = S ⨝C R Não é associativa:

Seja R(a,b), S(b,c) e T(c,d) (R ⨝R.b>S.b S) ⨝a<d T ≠ R ⨝R.b>S.b (S ⨝a<d T)

Page 29: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Seleções Tendem a reduzir bastante o tamanho das

relações Portanto, em geral, devem ser processados

antes dos outros operadores, ou seja, nos níveis mais baixos da árvore

Regras da álgebra são usadas para “quebrar” condições complexas e aumentar as oportunidades de “descidas” na árvore

Page 30: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Seleções - Regras

p1p2(R) =

p1vp2(R) =

p1 [ p2 (R)] = p2 [ p1 (R)]

[ p1 (R)] U [ p2 (R)]

Page 31: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Bags vs. Conjuntos R = {a,a,b,b,b,c} S = {b,b,c,c,d} R U S = ?

Opção 1: R U S = {a,a,b,b,b,b,b,c,c,c,d} Opção 2: R U S = {a,a,b,b,b,c,c,d}

Page 32: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Efeito da opção 2

p1vp2 (R) = p1(R) U p2(R) Exemplo R={a,a,b,b,b,c} P1 satisfeita por a,b; P2 satisfeita por b,c

p1vp2 (R) = {a,a,b,b,b,c}

p1(R) = {a,a,b,b,b} e p2(R) = {b,b,b,c}

p1(R) U p2 (R) = {a,a,b,b,b,c}

Page 33: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Opção 1 – Mais interessante Senador (……) Deputado (……)

T1 = ano,estado Senador; T2 = ano,estado Deputado

T1 Ano Estado T2 Ano Estado 97 AM 99 AM 99 AM 99 AM 98 SP 98 AM

União?

Page 34: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Projeções Notação

Para X e Y sendo conjuntos de atributos XY = X U Y

xy (R) ≠ x [y (R)]

Page 35: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

p (R ⨝ S) = [p (R)] ⨝ S p = predicado com atributos de R

q (R ⨝ S) = R ⨝ [q (S)] q = predicado com atributos de S

Objetivo é “adiantar” as seleções para antes da junção

Page 36: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

⨝Derivações

pq (R ⨝ S) = [p (R)] ⨝ [q (S)]

pqm (R ⨝ S) = m [(p R) ⨝ (q S)]pvq (R ⨝ S) = [(p R) ⨝ S]U[R ⨝ (q S)]

Page 37: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Regras: combinados

Sejam x = subconjunto dos atributos de R z = atributos do predicado de P

(subconjunto dos atribs de R)

x[p (R) ] = {p [ x (R) ]} x xz

Page 38: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

⨝Sejam x = subconjunto dos atributos de R y = subconjunto dos atributos de S

z = interseção dos atributos de R e S

xy (R S) = ⨝ xy {[xz (R) ] ⨝[yz (S) ]}

Page 39: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Projeções Notação

Para X e Y sendo conjuntos de atributos XY = X U Y

xy (R) ≠ x [y (R)]

Page 40: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Regras: combinados

Sejam x = subconjunto dos atributos de R z = atributos do predicado de P

(subconjunto dos atribs de R)

x [p (R)] = {p [ x (R) ]} x xz

Page 41: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

p(R U S) = p(R) U p(S)

p(R - S) = p(R) - S = p(R) - p(S)

Regras U combinadas:

Page 42: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

p1p2 (R) p1 [p2 (R)]

p (R ⨝ S) [p (R)] ⨝ S

R ⨝ S S ⨝ R

x [p (R)] x {p [xz (R)]}

Quais são as boas transformações?

Page 43: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Convenção: Projeções ocorrem antes

Exemplo: R(A,B,C,D,E) x={E} P: (A=3) (B=“gato”)

x {p (R)} vs. E {p{ABE(R)}}

Page 44: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

E se houverem indíces em A, B?

B = “gato” A=3

fazer a interseção de apontadores para encontrar os apontadores que levam as tuplas desejadas

Page 45: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Limites para aplicação de regras:

Nenhuma transformação por aplicação da regra é sempre boa

No entanto, executar seleções mais cedo é geralmente melhor

Page 46: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Mais transformações no livro texto

Eliminação de sub-expressões comuns Outras operações:

eliminação de duplicatas

Page 47: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Onde estamos Processamento de Consultas

Nível da Álgebra Relacional transformações boas transformações

Nível de plano de consulta detalhado estimativa de custos gerar e comparar planos

Page 48: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Estimativa de Custos

(1) Estimativa do tamanho dos resultados(2) Estimativa do nr. de operações de E/S

Page 49: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Tamanho do resultado Para obter estimativas do tamanho do

resultado, manter estatísticas para cada relação R

T(R) : # tuplas em R S(R) : # bytes em cada tupla de R B(R): # blocos p/ armazenar todas as tuplas de R V(R, A) : # valores distintos em R p/ o atrib. A

Page 50: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Exemplo R A: 20 bytes string

B: 4 bytes inteiroC: 8 bytes dataD: 5 bytes string

A B C Dcat 1 10 acat 1 20 bdog 1 30 adog 1 40 cbat 1 50 d

T(R) = 5 S(R) = 37V(R,A) = 3 V(R,C) = 5V(R,B) = 1 V(R,D) = 4

Page 51: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Estimativa de tamanho para W = R1 x R2

T(W) =

S(W) =

T(R1) T(R2)

S(R1) + S(R2)

Page 52: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

S(W) = S(R)

T(W) = ?

Estimativa de tamanho p/ W = A=a(R)

Page 53: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Exemplo R V(R,A)=3

V(R,B)=1V(R,C)=5V(R,D)=4

W = z=val(R) T(W) =

A B C Dcat 1 10 acat 1 20 bdog 1 30 adog 1 40 cbat 1 50 d

T(R)V(R,Z)

Page 54: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Hipótese:

Valores na expressão de seleção Z = valsão uniformemente distribuídas sobre ospossíveis valores de V(R,Z)

Page 55: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

O que acontece com W = z val (R) ?

T(W) = ?

Solução 1: Há 50% de chance da tupla satisfazer a

condição T(W) = T(R)/2

Solução 2: Intuitivamente, menos que a metade satisfaz T(W) = T(R)/3

Page 56: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Solução # 3: Estimar faixas de valores

Examplo R ZMin=1 V(R,Z)=10

W= z 15 (R)Max=20

f = 20-15+1 = 6 (fração dentro da faixa) 20-1+1 20

T(W) = f T(R)

Page 57: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Ou, alternativamente: fV(R,Z) = fração de valores distintos

T(W) = [f V(Z,R)] T(R) = f T(R) V(Z,R)

Page 58: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Estimativa de Tamanho para W = R1 R2Seja x = atributos de R1 y = atributos of R2

x y =

Mesmo que R1 x R2

Caso 1

Page 59: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

W = R1 R2 x y = AR1 A B C R2 A D

Caso 2

Hipóteses:

V(R1,A) V(R2,A) Cada valor de A em R1 está em R2V(R2,A) V(R1,A) Cada valor de A em R2 está em R1

Lembrete: V(R,A) = nr. de valores distintos de A em R

Page 60: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

R1 A B C R2 A D

Cálculo de T(W) se V(R1,A) V(R2,A)

Tome 1 tupla compara

1 tupla casa com T(R2) tuplas... V(R2,A)

Logo, T(W) = T(R2) T(R1) V(R2, A)

Page 61: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

V(R1,A) V(R2,A) T(W) = T(R2) T(R1) V(R2,A)

V(R2,A) V(R1,A) T(W) = T(R2) T(R1) V(R1,A)

[A é o atributo comum]

Page 62: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

T(W) = T(R2) T(R1)max{ V(R1,A), V(R2,A) }

Em geral W = R1 R2

Page 63: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Hipótese AlternativaValores uniformemente distribuídos sobre o

domínio

R1 A B C R2 A D

Uma tupla casa com T(R2)/DOM(R2,A) tupla, então

T(W) = T(R2) T(R1) = T(R2) T(R1) DOM(R2, A) DOM(R1, A)

Caso 2

Assume-se que é o mesmo domínio

Page 64: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Em todos os casos:

S(W) = S(R1) + S(R2) - S(A)

Lembrete = S é o tamanho da tupla

Page 65: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Usando ideias similares é possível estimar os tamanhos de:

AB (R) ….. Seção 7.4.2

A=aB=b (R) …. Seção 7.4.3 R S com vários atributos comuns …. Seção 7.4.5União, Intersecção, Diferença, …. Seção 7.4.7

Page 66: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Nota: Para expressões complexas, estimar tamanhos de valores intermediários

Ex.: W = [A=a (R1) ] R2

Tratar como uma relação U

T(U) = T(R1)/V(R1,A) S(U) = S(R1)V (U, *) = ???? …

Page 67: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Estimando os V (U,*)

Ex., U = A=a (R1) Suponha que R1 tem atributos A,B,C,D

V(U, A) = V(U, B) =V(U, C) = V(U, D) =

Page 68: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Exemplo R1 V(R1,A)=3

V(R1,B)=1V(R1,C)=5V(R1,D)=3

U = A=a (R1)

A B C Dcat 1 10 10cat 1 20 20dog 1 30 10dog 1 40 30bat 1 50 10

V(U,A) =1 V(U,B) =1 V(U,C) = T(R1) V(R1,A)

V(U,D) ... algo entre os dois

Page 69: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Possíveis escolhas U = A=a (R)

V(U,A) = 1V(U,X) = V(R,X), X ≠ A

Page 70: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Para junções U = R1(A,B) R2(A,C)

V(U,A) = min { V(R1, A), V(R2, A) }V(U,B) = V(R1, B)V(U,C) = V(R2, C)

[Preservação de conjuntos de valores 7.4.4]

Page 71: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Exemplo:Z = R1(A,B) R2(B,C) R3(C,D)

T(R1) = 1000 V(R1,A)=50 V(R1,B)=100T(R2) = 2000 V(R2,B)=200 V(R2,C)=300T(R3) = 3000 V(R3,C)=90 V(R3,D)=500

R1R2R3

Page 72: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

T(U) = 10002000 V(U,A) = 50 200 V(U,B) = 100

V(U,C) = 300

Resultado Parcial: U = R1 R2

Page 73: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Z = U R3

T(Z) = 100020003000 V(Z,A) = 50200300 V(Z,B) = 100

V(Z,C) = 90 V(Z,D) = 500

Page 74: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Sumário

Estimar o tamanho dos resultados é uma “arte”

Não esquecer: Estatísticas devem ser mantidas (custo?)

Page 75: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Visão Geral

Estimando o custo dos plano de consulta Estimando o tamanho dos resultados [feito!][feito!] Estimando o número de op. de ES [próximo!][próximo!]

Gerando e comparando planos

Page 76: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

--> Geração e compraração de planos Consulta

Geração Planos

Poda x x

Estimativa

de CustoCustos

Seleção

Otimização de Consultas

Escolher mínimo

Page 77: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Para gerar planos deve-se considerar:

Transformações nas expressão da Algebra(e.x. ordem das junções)

Uso dos índices existentes Construções de índices ou ordenação das

consultas em tempo de processamento

Page 78: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Detalhes de implementação:ex. – Algoritmo de junção

- Gerenciamento de Memória - Processamento paralelo

Page 79: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Estimando custos de E/S:

Contagem do nr. blocos de disco que devem ser lidos ou escritos para executar o plano de consulta

Page 80: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Para estimar estes custos, parâmetros adicionais são necessários:

B(R) = nr. de blocos que contêm as tuplas de Rf(R) = nr. max de tuplas de R por blocoM = nr. de blocos de memória disponíveis

HT(i) = nr. de níveis no índice iLB(i) = nr. de blocos folha no índice i

Page 81: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Índices de Clustering

Indíces que permitem que as tuplas sejam lidas na ordem em que ocorrem fisicamente

A

ÍndiceA

101517193537

Page 82: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Noçoes de clustering Clustered file organization

….. Clustered relation

….. Clustering index

R1 R2 S1 S2 R3 R4 S3 S4

R1 R2 R3 R4 R5 R5 R7 R8

Page 83: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Exemplo R1 R2 sobre um atributo comum CT(R1) = 10.000T(R2) = 5.000S(R1) = S(R2) = 1/10 blocosMémoria disponível = 101 blocos

Metrica: nr. de ESs (ignorando a escrita do

resultado)

Page 84: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Cuidado! Essa pode não ser a melhor maneira de comparar Ignora custos de CPU Ignora temporização Ignora requisitos de “double buffering”

Page 85: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Opções

Transformações: R1 R2, R2 R1 Algoritmos de junção:

Iteração (loops aninhados) Merge Join Join com Indices Hash join

Page 86: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Iteração (conceitualmente)para cada r R1 faça para cada s R2 faça

se r.C = s.C então retorne <r,s>

Page 87: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Iteração motivação Otimizador usa iteração quando nós temos

tabelas usando junção que possuem poucas tuplas.

Page 88: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Hash join (conceitualmente) Função de hashing h, valores entre 0 k Buckets para R1: G0, G1, ... Gk Buckets para R2: H0, H1, ... Hk

Algoritmo(1) Tuplas de R1 nos buckets G(2) Tuplas de R2 nos buckets H(3) Para i = 0 até k faça

comparar as as tuplas dos buckets

Gi e Hi

Page 89: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Exemplo simples hash: para/impar

R1 R2 Buckets2 5 Par: 4 4 R1 R23 12 Impar: 5 38 139 8

1114

2 4 8 4 12 8 14

3 5 9 5 3 13 11

Page 90: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Hash Join Motivação Hash joins são usados quando existe

junções de grandes tabelas. O otimizador usa a tabela menor das duas tabelas para construir uma tabela hash em memória, e faz a varredura na tabela maior e compara com o valor de hash com esta tabela hash para encontrar as linhas que pertencem a junção.

Page 91: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Merge join (conceitualmente)(1) se R1 e R2 não ordenados, ordene-os(2) i 1; j 1;

enquanto (i T(R1)) (j T(R2)) faça se R1{ i }.C = R2{ j }.C then RetorneTuplas i,j senão se R1{ i }.C > R2{ j }.C então j j+1 senão se R1{ i }.C < R2{ j }.C então i i+1

Page 92: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Procedimento RetorneTuplasEnquanto (R1{ i }.C = R2{ j }.C) (i T(R1)) faça

jj j;

enquanto (R1{ i }.C = R2{ jj }.C) (jj T(R2)) faça retorne <R1{ i }, R2{ jj }>;

jj jj+1;

i i+1;

Page 93: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Sort Merge Join Motivação Sort merge join funciona melhor que iteração

quando o volume de dados é maior nas tabelas, mas não tão bom quanto um hash join em geral.

Ele pode ser melhor que o hash join quando a junção tem as colunas já ordenadas ou a ordenação não é requerida.

Page 94: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Junção com Ìndice (Conceitualmente)

Para cada r R1 faça

[ X index (R2, C, r.C)

para cada s X façaretorne <r,s>]

Assuma índices sobre R2.C

Nota: X index(rel, atr, valor)

X = conjunto de tuplas de rel onde atr = valor

Page 95: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Fatores que afetam a performance

(1) Tuplas da relação são armazenadas fisicamente juntas?

(2) Relações são ordenadas pelo atributo de da junção?

(3) Existem índices ?

Page 96: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Custo: para cada tupla de R1: [Leitura da tupla + Leitura de R2]

Total =10.000 [1+5.000]=50.010.000 op. de ES

Examplo 1(a): Junção por iteração R1 R2 Relações não contíguas T(R1) = 10.000; T(R2) = 5.000 S(R1) = S(R2) =1/10 blocos MEM=101 blocos

Page 97: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

• Pode-se fazer melhor?Usar a memória(1) Ler 100 blocos de R1(2) Ler todos de R2 (usando 1 bloco) + join(3) Repetir até terminar

Page 98: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Custo: para ler cada porção de R1:Ler Porção de R1: 1000 Ler R2 : 5000

6000

Total = 10.000 x 6000 = 60,000 1.000

Page 99: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Reverter a ordem do join: R2 R1Total = 5000 x (1000 + 10.000) = 1000

5 x 11.000 = 55.000

• Pode-se fazer melhor?

Page 100: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Relações Contíguas

Exemplo 1(b) Iteração R2 R1

CustoPara cada porção de R2:

Ler porções: 100 ESsLer R1: 1000 ESs

1.100

Total= 5 porções x 1.100 = 5.500 ESs

Page 101: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Exemplo 1(c) Merge Join R1 e R2 ordenados por C; relações contíguas

Memória

R1R2

…..

…..

R1

R2

Custo total: Custo de Ler R1 + Custo de Ler R2= 1000 + 500 = 1.500 ESs

Page 102: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Example 1(d) Merge Join R1, R2 não ordenados, mas contiguos

Necessário ordenar R1e R2 primeiro….

Page 103: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Uma maneira de ordenar: Merge Sort(i) Para cada 100 blocos de R:

- Ler os 100 blocos- Ordenar na memória- Escrever no disco

partes ordenadas

Memória

R1

R2 ...

Page 104: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

(ii) Ler as partes + merge + escrever

Ordenado Memória Partes

Ordenadas

......

Page 105: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Custo: Ordenação Cada tupla é lida,escrita,

lida,escritaPortanto...Custo para ordenar R1: 4 x 1.000 = 4.000Custo para ordenar R2: 4 x 500 = 2.000

Page 106: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Exemplo 1(d) Merge Join (continuação)R1,R2 contíguos, mais não ordenados

Custo Total = custo de ordenação + custo de junção

= 6.000 + 1.500 = 7.500 ESs

Mas: Custo Iteração = 5.500 Portanto, merge join não compensa!

Page 107: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Suponha R1 = 10.000 blocos contíguosR2 = 5.000 blocos não ordenados

Iteração: 5000 x (100+10.000) = 50 x 10.100 100

= 505.000 ESs Merge join: 5(10.000+5.000) = 75.000 ESs

Merge Join (com sort) VENCE!

Page 108: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Quanto de memória é necessária para o Merge Sort?

Ex.: Suponha que temos 10 blocos 10

...

100 partes O merge requer 100 blocos!R1

Page 109: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Em geral: k blocos na memória x blocos para ordenar a relação nr. de partes = (x/k) tamanho da parte = k

nr. de partes < buffers disponíveis para merge

portanto... (x/k) kou k2 x ou k x

Page 110: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Em nosso exemploR1 tem 1000 blocos, k 31.62R2 tem 500 blocos, k 22.36

São necessários pelo menos 32 buffers

Page 111: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Exemplo 1(e) Index Join

Assuma que há um índice sobre R1.C 2 níveis Cabe na memória

Assuma que R2 é contíguo, não ordenado

Page 112: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Custo: Leituras: 500 op de E/S Para cada tupla de R2:

Se R2.C=R1.C – Verifica no índice → 0 op de E/S Ler tupla de R1 → 1 op de E/S

Page 113: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Qual o número esperado de tuplas para R2.C=R1.C?

(a) Se R1.C é chave e R2.C é chave estrangeiranr. de tuplas esperadas é = 1

(b) Suponha que V(R1,C) = 5000, T(R1) = 10,000com distribuição uniforme: nr. de tuplas esperadas é = 2

Page 114: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

(c) Suponha que DOM(R1, C) = 1,000,000 T(R1) = 10,000Com a hipótese alternativanr. esperado de tuplas = 10,000 = 1

1,000,000 100

Qual o número esperado para R2.C=R1.C?

Page 115: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Custo total com index join

(a) Custo total = 500+5000(1)1 = 5.500

(b) Custo total= 500+5000(2)1 = 10.500

(c) Custo total = 500+5000(1/100)1=550

Page 116: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

E se o índice não cabe na memória?

Exemplo: Suponha que o índice sobre R1.C ocupa 201 blocos

Manter a raiz e 99 folhas na memória Os custo esperado de cada verificação é

E = (0) 99 + (1)101 0.5 200 200

Page 117: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Custo total (incluindo verificações)

Caso (b) : 2 tuplas esperadas = 500+5000 [verific. + carga de registros]= 500+5000 [0.5+2]= 500+12.500 = 13.000 op de E/S

Caso (c) : 1/100 tuplas esperadas= 500+5000 [0.5 + (1/100) ]= 500+2500+50 = 3050 op de E/S

Page 118: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Até agora …

Iteração 55.000Merge Join _______Sort+ Merge Join _______R1.C Index _______R2.C Index _______

Iteração 5500Merge join 1500Sort+Merge Join 7500 R1.C Index 5500 3050 550R2.C Index ________co

ntíg

uos

não

cont

íguo

s

R1 R2

Page 119: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

R1, R2 contiguous (não ordenados) Usar 100 buckets Ler R1, hash, + escrever buckets

R1

Exemplo 1(f) Hash Join

... ...

10 blocos

100

Page 120: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

→ O mesmo para R2→ Ler um bucket de R1; construi tabela hash na

memória→Ler o correpondente de Re + verifica na tabela hash

R1R2

...R1memória...

→ Repetir para todos os buckets

Page 121: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Custo:Buckets Ler R1 + escrever

Ler R2 + escreverJoin: Ler R1, R2

Custo total = 3 x [1000+500] = 4500Nota: isto é uma aproximação, uma vez que os buckets podem variar de tamanho e os blocos tem de estar completos

Page 122: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Requisitos mínimos de memória:

Tamanho dos buckets de R1 = (x/k)k = nr. de buffers de memóriax = número de blocos de R1

Assim: (x/k) < k

k > x São necessários k+1 buffers

Page 123: BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.

Sumário

Iteração funciona bem para “pequenas” relações (relativo ao tamanho da memória)

Para equi-junções onde as relações não estão ordenadas e não há índices, hash join é usualmente melhor

Ordenação + merge join: bons para não equi-junções (ex. R1.C > R2.C)

Se as relações já estão ordenadas, usar merge join Se existem índices, eles podem ser úteis,

dependendo do tamanho esperado para os resultados