BD I / 2013-02 Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.
-
Upload
gabrielhenrique-cecilio -
Category
Documents
-
view
223 -
download
1
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/1.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/2.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/3.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/4.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/5.jpg)
• 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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/6.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/7.jpg)
Á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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/8.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/9.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/10.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/11.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/12.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/13.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/14.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/15.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/16.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/17.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/18.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/19.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/20.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/21.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/22.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/23.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/24.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/25.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/26.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/27.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/28.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/29.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/30.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/31.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/32.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/33.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/34.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/35.jpg)
⨝
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/36.jpg)
⨝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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/37.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/38.jpg)
⨝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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/39.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/40.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/41.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/42.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/43.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/44.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/45.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/46.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/47.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/48.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/49.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/50.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/51.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/52.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/53.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/54.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/55.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/56.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/57.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/58.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/59.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/60.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/61.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/62.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/63.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/64.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/65.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/66.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/67.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/68.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/69.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/70.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/71.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/72.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/73.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/74.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/75.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/76.jpg)
--> 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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/77.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/78.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/79.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/80.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/81.jpg)
Í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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/82.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/83.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/84.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/85.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/86.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/87.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/88.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/89.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/90.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/91.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/92.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/93.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/94.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/95.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/96.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/97.jpg)
• 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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/98.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/99.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/100.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/101.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/102.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/103.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/104.jpg)
(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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/105.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/106.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/107.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/108.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/109.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/110.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/111.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/112.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/113.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/114.jpg)
(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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/115.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/116.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/117.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/118.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/119.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/120.jpg)
→ 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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/121.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/122.jpg)
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.](https://reader034.fdocumentos.tips/reader034/viewer/2022042618/570638401a28abb8238f1410/html5/thumbnails/123.jpg)
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