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

Upload: gabrielhenrique-cecilio

Post on 07-Apr-2016

223 views

Category:

Documents


1 download

TRANSCRIPT

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