1 / 15

Algoritmos de Junção – Sort-Merge Join Otimizado Hash Join

Algoritmos de Junção – Sort-Merge Join Otimizado Hash Join. AULA 19 Profa. Sandra de Amo GBC053 – BCC. Otimização do Sort Merge Join. Realizar a junção durante a ordenação das relações Tamanho do buffer = B páginas

ajay
Download Presentation

Algoritmos de Junção – Sort-Merge Join Otimizado Hash Join

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 = logB-1 (M/B) + 1 ≤ 2  logB-1 (M/B) ≤ 1 B ≥ M/B + 1  B2 – B ≥ M  B(B-1) ≥ M  B > M

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

  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 > M1/2 M = tamanho da relação maior número de subarquivos de R = M/X < M1/2 número de subarquivos de S = N/X < M/X < M1/2 Idéia: Se tivermos B > 2M1/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 > 2.1000 ½ + 1 = 64 + 1 = 65 Custo da 1a iteração da ordenação = 2M + 2N = 2000 + 1000 = 3000 I/Os Custo da 2a 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 Relação R particionada Relações R e S Pt 1 Pt 2 Pt 3 Pt 6 Pt 5 Pt 4 Distribui Usando hash h Página de R Buffer tem capacidade para B páginas, onde B – 1 = número k de partições Disco Disco

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

  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çabegin                     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;endend    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 poolend

  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) Paracada 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    beginPara 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 <r,s> em Resultendend     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 > 2 + 1 ~ 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

More Related