Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC.

Slides:



Advertisements
Apresentações semelhantes
Otimização de Consultas em SQL Estimativas de Custos
Advertisements

AULA 8 Profa. Sandra de Amo GBC053 – BCC
Sistemas operacionais
Indice estruturado por Hash
Cálculo de Custos de Operações I/O – Arquivos Ordenados
Otimização de Consultas em SQL Parte II - Planos Alternativos -  Estimativa de Custos dos Planos de Execução AULA 19 Profa. Sandra de Amo Programa de.
REVISÃO PARA 3a PROVA Gerência de Banco de Dados
RESUMO DA AULA 5 Profa. Sandra de Amo GBC053 – BCC
Cálculos de Custos I/O-Arquivos Hash Introdução aos Métodos de Acesso
Otimização de Consultas em SQL Parte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 19 Profa. Sandra de Amo Programa.
Indices estruturados por B-TREE
Organização de Arquivos Cálculo de Custos de I/O Arquivos Hashed AULA 7 – Parte I Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Projeção eliminando Duplicatas
Gerenciamento de Banco de Dados
SQL Exercícios de Revisão
Algoritmos de Junção – BNL e IndexNL AULA 16 Profa. Sandra de Amo GBC053 – BCC
AULA 27 Profa. Sandra de Amo GBC053 – BCC
Organização de Arquivos Introdução
Algoritmos para Operação de Junção
Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC
Organização de Arquivos Tipos de Indices Cálculo de Custos de I/O
Algoritmos de Junção – Sort-Merge Join Hash Join
Algoritmos para Seleção com Condições Gerais AULA 17 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção e Projeção
Algoritmos para Seleção Simples
Algoritmos para Operações de Conjuntos AULA 19 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Operação de Junção – NLJ orientado a tuplas e NLJ orientado a páginas AULA 15 Profa. Sandra de Amo GBC053 – BCC
AULA 23 Profa. Sandra de Amo GBC053 – BCC
Algebra relacional nomeada e não-nomeada
Introdução aos Métodos de Acesso AULA 7 – Parte II Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Projeção e Operações de Conjuntos AULA 22 Profa. Sandra de Amo GBC053 – BCC
B-tree Gerenciamento de Duplicatas Bulk Loading AULA 12 Profa. Sandra de Amo GBC053 – BCC
Otimização de Consultas em SQL Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 24 Profa. Sandra de Amo GBC053 – BCC
Método de Acesso Dinâmico: B-Tree - Deleção Chaves de busca sem duplicatas AULA 9 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Operação de Junção AULA 17 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU Sistemas de Banco de Dados
Revisão Prova 2 Métodos de Acesso: BTree e Hash AULA 20 Profa. Sandra de Amo GBC053 – BCC
Arquivos Extensíveis.
Algoritmos para Operação de Junção Loops Aninhados
4/1/2017 Algoritmos para processamento e otimização de consultas (Otimização baseada em custos) Cristiano Galina Slides adaptados do livro Sistema de Banco.
INF70 – Gerenciamento de Banco de Dados 2 Ordenação Externa Ilmério Reis da Silva UFU/FACOM/BCC.
Geração de Planos de Execução Planos para Consultas Aninhadas
Otimização de Consultas em SQL Planos Alternativos AULA 24 Profa. Sandra de Amo GBC053 – BCC
INF70 – Gerenciamento de Banco de Dados 2 Índices baseados em Hash Ilmério Reis da Silva UFU/FACOM/BCC.
Cálculo de Custos de I/O Heap Files AULA 4 Profa. Sandra de Amo Gerenciamento de Banco de Dados – BCC.
Arquivos Estruturados por Ordenação– Custos I/O AULA 5 Profa. Sandra de Amo GBC053 – BCC.
Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados
AULA 26 Profa. Sandra de Amo GBC053 – BCC
Ordenação Externa de Arquivos – Um exemplo
Revisão Prova 2 Métodos de Acesso – Parte 2 AULA 21 Profa. Sandra de Amo GBC053 – BCC.
Otimização de Consultas em SQL Planos de Execução
Arquivos Estruturados por Hashing– Custos I/O
Algoritmos de Junção – Sort-Merge Join Otimizado Hash Join
sintonia de banco de dados
Algoritmos de Processamento e Otimização de Consultas
Desenvolvendo um script SQL
Comandos SQL.
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Query processing in main memory Vitor Silva. Bibliografia “Query Processing in Main Memory Database Management Systems” - Tobin J. Lehman & Michael J.
AULA 20 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Operações Binárias entre blocos SQL AULA 19 – Parte I Profa. Sandra de Amo GBC053 – BCC.
BD I / Processamento de Consultas Prof. Altigran Soares da Silva IComp/UFAM.
Otimização de Consultas em SQL Comparação: Joins em pipeline versus Joins materializados AULA 26 – Parte I Profa. Sandra de Amo GBC053 – BCC.
AULA 21 Profa. Sandra de Amo BCC - UFU
Algoritmos de Junção – IndexNL e Sort Merge Join AULA 19 Profa. Sandra de Amo GBC053 – BCC.
Algoritmos para o operador de Projeção AULA 19 – Parte II Profa. Sandra de Amo GBC053 – BCC.
AOBD 07/08 Mini-Projecto 2 Soluções. 1) Considere que existem três relações R1=(A,B,C), R2=(C,D) e R3=(D,E) com chaves primárias A, C e D, respectivamente.
Banco de Dados I Unidade 6 Processamento de Consultas Otimização Lógica.
PostgreSQL Índices Nuno Campos N.º Nuno Campos - N.º Índice Introdução Tipos de Índices – B-Tree – R-Tree – Hash – GiST Classes de Operadores.
Algoritmos de Junção – Sort Merge Join e Hash Join
Algoritmos para Seleção AULA 23 Profa. Sandra de Amo GBC053 – BCC.
Transcrição da apresentação:

Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC

Operadores do SQL EMP(ENUM,ENOME,SAL,DNUM) DEPT(DNUM,DNOME,ORC) SELECT Sal. EMP FROM EMP, DEPT WHERE DEPT.DNUM = EMP.DNUM AND DEPT.ORC > 40 mi JUNÇÃO por DNUM PROJEÇÃO EM Sal SELEÇÃO ORC > 40mi Quais os salários dos empregados que trabalham em departamentos com orçamento acima de 40 milhões de reais ?

Nesta aula  Vamos estudar 3 algoritmos que implementam a operação de Junção (JOIN)  Vamos calcular seus respectivos custos

Tabelas a serem juntadas  R : tabela externa M páginas Pr tuplas por página  S : tabela interna N páginas Ps tuplas por página  Condição de Junção: Ri = Sj  Custo de uma operação de I/O = 10ms

Nested Loops Join – tupla a tupla Para cada tupla r ε R faça Para cada tupla s ε S faça se ri = sj então insere em Result Retorne Result t Páginas de S Página de R

Custo do NLJ - t/t  S é escaneada Pr. M vezes  Cada scan em S equivale a N operações de I/O (N = número de páginas de S)  R é escaneada uma vez  Custo total = Pr. M. N + M  Não se considera o custo de escrever o resultado, pois é igual para todos os métodos.

Exemplo  M = 1000 páginas  Pr = 100 registros por página  N = 500  Custo = = I/Os ~ 140 horas de processamento !!

Como otimizar o NLJ-tt ? Custo = M + Pr.M. N Reduzir o número de scans da tabela interna ? Reduzir o tamanho tabela interna ? NLJ- pag a pag Block Nested Loop Join (BNL) Index Nested Loop Join

Nested Loops Join – página a página Para cada R-page de R faça Para cada S-page de S faça se ri = sj então insere em Result Retorne Result Páginas de S Página de R

Custo do NLJ- p/p  S é escaneada M vezes  Cada scan em S equivale a N operações de I/O (N = número de páginas de S)  R é escaneada uma vez  Custo total = M + M. N  Não se considera o custo de escrever o resultado, pois é igual para todos os métodos.

Exemplo  M = 1000 páginas  N = 500  Custo = = I/Os ~ 1,4 horas de processamento

Block Nested Loops Join – uso do Buffer Caso 1: Tem-se espaço suficiente no buffer para a relação S inteira + 2 páginas extras Para cada R-page faça Para cada S-page na memória faça se ri = sj então insere em Result Retorna Result Relação S inteira Buffer Página de RPágina de output Custo = M + N I/Os No exemplo : 1500 I/Os = 15 segundos

Block Nested Loops Join – uso do Buffer Caso 2: Tem-se espaço suficiente no buffer para B - 2 páginas da relação R + 2 páginas extras Para cada bloco de (B-2) páginas in memory de R faça Para cada S-page faça se ri = sj então insere em Result Retorna Result Bloco de B-2 páginas de R Buffer tem capacidade para B páginas Página de SPágina de output

Esquema Geral do BNL Join Bloco de B-2 páginas de R Buffer tem capacidade para B páginas Página de SPágina de output Relações R e S Disco Relação R S

Custo do BNL Join  K = Número de blocos de B-2 páginas de M K = [M/(B-2)]  Cada página de S é escaneada K vezes  Cada scan em S equivale a N operações de I/O (N = número de páginas de S)  R é escaneada uma vez  Custo total = M + K.N = M + [M/(B-2)]N  Não se considera o custo de escrever o resultado, pois é igual para todos os métodos.

Exemplo  M = 1000 páginas  N = 500  B = 102  Custo = (1000/100) = 6000 I/Os ~ 1 minuto

Exercício  Calcular o custo do BNL Join, caso a relação S (menor) seja escolhida como a relação externa.  Calcular o custo do BNL Join no Caso 1, caso só se tenha espaço suficiente no buffer para B - 2 páginas da relação S + 2 páginas extras Para cada R-page faça Para cada bloco de B-2 páginas de S faça se ri = sj então insere em Result Retorna Result

Otimizações do BNL Join 1. Diminuindo o custo de CPU para fazer as junções. Se houver espaço suficiente na memória, construir uma tabela hash para cada R-block carregado na memória, com chave = atributo da junção. Para cada tupla s ε S, para encontrar r ε R-block tal que ri = sj, utiliza-se a tabela Hash construída.

Otimizações do BNL Join 2. Ao invés de utilizar B-2 páginas em memória para alocar blocos da relação externa R, e uma só página para a relação S, utilizar (B-1)/2 páginas para alocar um bloco de R e (B-1)/2 páginas para alocar um bloco da relação interna S. Exercício: calcular o custo neste caso. Onde há melhora de performance em relação ao método anterior (onde 1 única página em memória é alocada para a relação S) ?

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

Index Nested Loops Join Se uma das relações (S) possui um índice nos atributos da junção (chave = atributos da junção) Usa S como a relação interna Para cada tupla r ε R faça Para cada tupla s ε S tal que ri = sj insere em Result Retorna Result Usa o índice em S para encontrar todas as tuplas de S com sj = ri

Custo do INL Join  Para cada r = Custo para encontrar todas as tuplas de S com s j = r i  Se o índice é B-Tree: custo para encontrar a folha apropriada é 2 a 4 I/Os = profundidade da árvore  Se o índice é Hash : custo para encontrar o bucket apropriado é 1 a 2 I/Os (2 I/Os caso for extensível com diretório de ponteiros em disco).  Se o índice é agrupado: custo de encontrar as tuplas correspondendo ao ponteiro indicado pelo índice é 1 I/O.  Se o índice não é agrupado: custo de encontrar as tuplas correspondendo ao ponteiro indicado pelo índice pode ser K I/O, onde K = número de tuplas de S com s i = r j.

Custo do INL Join  Custo Total em caso de índice hash agrupado: M + Pr.M. (2 + 1)  Custo Total em caso de índice B-tree agrupado M + Pr.M. (4 + 1)

Exemplo 1  Tamanho de R = M = 1000 páginas  Tamanho de S = N = 500  Pr = 100 tuplas por página  S tem indice hash no atributo de junção  Atributo de junção é chave da relação S  Custo = (1 + 1,2 ) = I/0s = 37 min

Exemplo 2 Tamanho de S = M = 1000 páginas (INTERNA) Tamanho de R = N = 500 páginas (EXTERNA) 80 tuplas por página na relação externa R 100 tuplas por página na relação interna S S tem indice hash no atributo de junção não é chave da relação Atributo de junção não é chave da relação S CASO 1: Indice é agrupado CUSTO = (1,2 + 1) = (2,2) = I/Os = 15 min CASO 2 : Indice é não é agrupado Supondo que há distribuição uniforme dos valores do atributo A em S: cada tupla de R ‘ casa ’ com 2,5 tuplas de S. Total de tuplas de S = 100*1000= Total de tuplas de R = 500* 80 = CUSTO = (1,2 + 2,5) = I/Os = 25 min

Conclusão  INL Join vale mais a pena quando o índice está na relação maior e é agrupado.  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 rel. maior = 15 min INL Join com índice ñ agrupado na rel. maior = 25 min