A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Algoritmos de Junção – Sort-Merge Join Otimizado Hash Join AULA 19 Profa. Sandra de Amo GBC053 – BCC.

Apresentações semelhantes


Apresentação em tema: "Algoritmos de Junção – Sort-Merge Join Otimizado Hash Join AULA 19 Profa. Sandra de Amo GBC053 – BCC."— Transcrição da apresentação:

1 Algoritmos de Junção – Sort-Merge Join Otimizado Hash Join AULA 19 Profa. Sandra de Amo GBC053 – BCC

2 Otimização do Sort Merge Join Realizar a junção durante a ordenação das relações  Tamanho do buffer = B páginas  Primeira iteração da ordenação: ordena-se cada página de R e cada página de S e obtém-se M/B subarquivos ordenados de R e N/B subarquivos ordenados de S  Custo: 2M + 2N  Segunda iteração da ordenação: finaliza a ordenação dos arquivos e ao mesmo tempo constrói a junção das 2 tabelas  Para finalizar a ordenação na 2a iteração:  Número de etapas = log B-1 (M/B) + 1 ≤ 2  log B-1 (M/B) ≤ 1  B ≥ M/B + 1  B 2 – B ≥ M  B(B-1) ≥ M  B > M

3 Esquema Geral 2 a iteração da ordenação Buffer Subarquivos da Relação R em disco Cada página está ordenada Subarquivos da Relação S em disco RS Página de em disco Página ordenada de R Página ordenada de S

4 Custo do Sort Merge Join Otimizado Otimização  Primeira iteração da ordenação: ordena-se cada página de R e cada página de S e obtém-se M/B subarquivos ordenados de R e N/B subarquivos ordenados de S  Custo: 2M + 2N  Suponha que:  Temos no buffer 2X + 1 páginas, onde X > M 1/2 M = tamanho da relação maior  número de subarquivos de R = M/X < M 1/2  número de subarquivos de S = N/X < M/X < M 1/2  Idéia: Se tivermos B > 2 M 1/2 + 1, teremos espaço suficiente para fazer o “merge” dos subarquivos de R e dos subarquivos de S na segunda iteração, além de construir a resposta da junção simultaneamente.  Custo = M + N (Não levo em consideração o tempo para gravar a resposta)  Custo Total = 3(M+N)

5 Exemplo  M = 1000, N = 500, B = 102  102 > ½ + 1 = = 65  Custo da 1 a iteração da ordenação = 2M + 2N = = 3000 I/Os  Custo da 2 a iteração (junção) = M + N = 1500 I/Os  Custo total = 4500 I/Os = 45 segundos

6 Conclusão  Até o momento:  NLJ - t/t = 140 horas  NLJ - p/p = 1 hora e 24 min  BNL Join com B = 102 páginas no buffer = 1 min  INL Join com índice agrupado na relação maior = 15 min  INL Join com índice ñ agrupado na rel. maior = 25 min  Sort Merge Join, B = 102 páginas no buffer = 1 min 30 s  Sort Merge Join otimizado, B = 102 páginas no buffer  Custo = 45 segundos

7 Hash Join  Fase do particionamento  Utiliza função hash para particionar R e S em k partições  Fase de junção  Supondo que cada partição i da relação menor S cabe na memória  Carrega-se cada partição i de S na memória  Reserva-se uma página para a partição i da relação R  Para cada tupla t da partição i de R varre-se toda a partição correspondente de S. Sabe-se que as tuplas que casam com t só podem estar nesta partição i de S.

8 Fase do Particionamento de R e S Buffer tem capacidade para B páginas, onde B – 1 = número k de partições Página de R Relações R e S Disco Relação R particionada Pt 1Pt 2Pt 3Pt 6 Pt 5 Pt 4 Distribui Usando hash h

9 Fase da Junção de R e S Buffer tem capacidade para B páginas, onde B – 2 = tamanho da partição da relação menor Página da partição n de R Relações R e S particionadas Disco S Relação R Partição n de S (inteira) S Página de R

10 Algoritmo Hash Join Rotina Particiona(R,k) % R = tabela, k = número de partições Para cada página P da tabela R faça begin Leia P; Para cada tupla r em P faça begin i : = h(r(A)); insere r na página Ki do buffer pool; Se página Ki está cheia então grava Ki em disco e libera espaço no buffer correspondente a Ki; end end Para cada i=1,2,...,k faça begin Partição Pi = conjunto das páginas (em sequência) gravadas em disco correspondentes ao espaço Ki do buffer pool end

11 Algoritmo Hash Join Rotina Junta(P1,…Pk,P’1,…,P’k) % (P1,...,Pk = partições de R; P ’ 1,..., P ’ k = partições de S) Para cada i = 1,...,k faça begin carrega partição Pi de R no buffer pool (supomos que cada partição da relação menor (R) caiba no buffer pool); Para cada página P da partição P'i de S faça begin Para cada tupla s de P faça begin Para cada r na partição Pi de R tal que r(A) = s(A) faça insere em Result end end end

12 Custo do Hash Join  R = M  S = N  Fase do Particionamento = 2(M + N)  Fase da Junção = M + N  Custo Total = 3(M+N)

13 Requisitos de memória  K = número de partições  M = tamanho da relação menor  N = tamanho da relação maior  B = número de páginas no buffer  Fase de particionamento: n. de partições = K = B - 1  Tamanho de cada partição da relação menor = M/K = M/(B-1)  Fase da Junção : B ≥ M/(B-1) + 2  B > M

14 Exemplo M = 500 N = 1000 B > 500 ~ 25 páginas Custo Hash = 3(1500) = 4500 Custo de Sort-Merge = 3(1500) caso B > ~ 65 páginas  25 ≤ B ≤ 65: Hash Join é melhor  B ≥ 65 : Hash e Sort-Merge têm os mesmos custos  Quanto maior for a diferença entre o tamanho das relações, maior a vantagem do Hash Join sobre o Sort- Merge, pois necessita de menos espaço no buffer para ter o custo mínimo de 3(M+N). 1000

15 Conclusão  NLJ - t/t = 140 horas  NLJ - p/p = 1 hora e 24 min  BNL Join com B = 102 páginas no buffer = 1 min  INL Join com índice agrupado na relação maior = 15 min  INL Join com índice ñ agrupado na rel. maior = 25 min  Sort Merge Join, B = 102 páginas no buffer = 1 min 30 s  Sort Merge Join otimizado, B = 102 páginas no buffer = 45 segundos  Hash Join, B = 102 páginas no buffer = 45 segundos


Carregar ppt "Algoritmos de Junção – Sort-Merge Join Otimizado Hash Join AULA 19 Profa. Sandra de Amo GBC053 – BCC."

Apresentações semelhantes


Anúncios Google