Há vários algoritmos para processar junções nested-loop join block nested-loop join indexed nested-loop join merge-join hash-join

Documentos relacionados
Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

A cláusula order by permite ordenar tuplos exemplo: listar por ordem alfabética os nomes dos clientes com empréstimo na agência de Perryridge

Ordenação de tuplos order by

Bases de Dados. Junção de relações. Junção de relações

Linguagem de Definição de Dados Estrutura básica Operações com conjuntos Funções de agregação Valores nulos Subconsultas embebidas Relações derivadas

Sumário SELECT + FROM

SQL - Perguntas. André Restivo. Faculdade de Engenharia da Universidade do Porto. February 24, 2012

de Bases de Dados Exame 1

- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

INSTITUTO SUPERIOR TÉCNICO Administração e Optimização de Bases de Dados

Processamento e Otimização de Consultas. Msc. Simone Dominico Orientador: Dr. Eduardo Cunha de Almeida PPGINF - UFPR

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Linguagem SQL Comando SELECT Agrupamento de Resultados

ANÁLISE E PROJETO DE BANCO DE DADOS

Sistemas de Bases de Dados 1.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

Álgebra Relacional e SQL

Operações Estendidas da Álgebra Relacional

SQL-99: Esquema de BD EMPRESA

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL (Tópicos) Structured Query Language

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

Rápida revisão do Modelo Relacional

Bases de Dados. Álgebra Relacional II Junções, agregações, vistas. P. Serendero,

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

SQL Comandos para Relatórios e Formulários. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Bases de Dados. DML Data Manipulation Language Parte 2

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Aula 11 SBD SQL Parte 3. Profa. Elaine Faria UFU

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

Definida pelo American National Standard Institute (ANSI) em 1986

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

Banco de Dados Notas de Aula Consultas em SQL Prof. Dr. Daniel A. Furtado

Otimização e Execução de Consultas Caso Centralizado Parse Query

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Bacharelado em Ciência da Computação UFU Disciplina GBC053 Gerência de Banco de Dados Profa. Sandra de Amo

Aula 10 BD 1 SQL Parte 2. Profa. Elaine Faria UFU

Banco de Dados. Otimização de consultas. Prof. Joao Eduardo Ferreira Prof. Osvaldo Kotaro Takai. Última atualização: 15 de maio de 2006

BANCO DE DADOS PARA WEB

Capítulo 4: SQL! Database System Concepts! Silberschatz, Korth and Sudarshan (modificado)!

Projeto de Banco de Dados

Banco de dados. Aula 22 O Comando SELECT. 1 Wedson Quintanilha da Silva -

SQL Consultas Básicas

Bases de Dados 2008/2009

Prof. Fabiano Taguchi

Material Teórico. Cláusula GROUP BY e HAVING. Responsável pelo Conteúdo: Prof. Ms. Alexander Gobbato Albuquerque

Subconsulta na Cláusula FROM

SQL DML. SQL Linguagem de Manipulação de Dados SELECT SELECT SELECT SELECT

Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.

Introdução às funções e procedimentos. SQL suporta funções e procedimentos úteis com tipos de dados específicos

Prova de Fundamentos de Bancos de Dados 2 a Prova

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

TABELA ENTIDADE LINHA OCORRÊNCIA DA ENTIDADE COLUNA ATRIBUTO DA ENTIDADE

Transcrição:

Bases de Dados Algoritmos para junção Algoritmos para junções Há vários algoritmos para processar junções nested-loop join block nested-loop join indexed nested-loop join merge-join hash-join A escolha é baseada no custo de cada um deles 2 1

Nested-loop join Para calcular a junção-θ (r θ s) for each tuplo t r in r for each tuplo t s in s se o par (t r,t s ) satisfaz a condição θ então adicionar t r t s ao resultado Custos transferência: b r + n r * b s localização: b r + n r 3 Block nested-loop join for each bloco B r of r for each bloco B s of s for each tuplo t r in B r for each tuplo t s in B s se o par (t r,t s ) satisfaz a condição θ então adicionar t r t s ao resultado Custos transferência: b r + b r * b s localização: b r + b r 4 2

Indexed nested-loop join Para calcular a junção natural (r s) for each tuplo t r in r usar índice para encontrar tuplos de s que têm o mesmo valor que t r no atributo da junção Custo: b r (t T + t S ) + n r c onde c é o custo de uma operação de selecção com índice depe do índice e do atributo da junção ver algoritmos de selecção A3, A4, A5 5 Merge-join Para calcular a junção natural (r s) 1. ordenar relações r e s pelo atributo da junção 2. fundir as duas relações numa só (merge) semelhante ao passo 2 da ordenação Custos (*) transferência: b r + b s localização: b r + b s e ainda os custos de ordenação (*) assumindo que os registos com o mesmo valor do atributo cabem todos num bloco 6 3

Hash-join Para calcular a junção natural (r s) não requer ordenação abordagem build-and-probe Se a relação mais pequena couber em memória 1. build criar índice hash em memória para essa relação 2. probe pesquisar os elementos da outra relação no índice Se nenhuma das relações couber em memória 7 Hash-join Para calcular a junção natural (r s) subdividir os registos de r e s em n partições função de hash diz qual é a partição para um dado registo a função calcula a partição com base no atributo da junção aplicar build-and-probe a cada par de partições custos transferência: 3*b b r + 3*b b s localização: 2*b r + 2*b s + 2*n h n h = nº de partições 8 4

Junções com múltiplos critérios Junção com conjunção de critérios (r θ1 Λ θ 2 Λ θ n s) usar nested-loop join, block nested-loop join, ou aplicar diferentes algoritmos para cada (r θi s) e no final fazer a intersecção dos resultados de cada junção Junção com disjunção de critérios (r θ1 V θ 2 V θ n s) usar nested-loop join, block nested-loop join, ou aplicar diferentes algoritmos para cada (r θi s) e no final fazer a união dos resultados de cada junção 9 Algoritmos de junção no Postgres indexed nested-loop join merge join hash join 10 5

Bases de Dados Algoritmos para outras operações Outras operações Eliminação de duplicados ordenar e apagar tuplos adjacentes em duplicado optimização: durante própria ordenação, não colocar na saída tuplos duplicados select distinct customer_name from depositor; 12 6

Outras operações Agregações exemplo: branch_name G sum(balance) (account) usando ordenação ou hashing é possível agrupar tuplos pelo atributo branch_name depois aplica-se a função de agregação (sum) a cada grupo optimização: durante a própria ordenação (passos 1 e 2) ir calculando agregações "parciais" com tuplos que estejam no mesmo grupo funciona para as funções count, min, max, sum para a função avg, calcular via agregações parciais de sum e count e no fim dividir um resultado pelo outro 13 Outras operações Operações com conjuntos (r U s, r s, r s) podem ser implementadas como variantes do algoritmo hash-join dividir ambas as relações em partições para cada partição i construir um índice do tipo hash para r i e agora r U s : colocar no índice todos os tuplos de s i excepto os que já lá estiverem r s : devolver os tuplos de s i mas apenas aqueles que já estão no índice r s : retirar do índice os tuplos de s i que já lá estiverem adicionar conteúdo do índice ao resultado 14 7

Outras operações Junções externas (r s, r s, r s) pode ser implementadas como variantes do algoritmo merge-join r s : durante o merge cada tuplo de r que não encontra correspondente em s é colocado no resultado com nulls nos lugares dos atributos de s junções externas à direita e completas implementadas de forma semelhante 15 Bases de Dados Avaliação de expressões 8

Avaliação de expressões Existem duas técnicas para avaliação de expressões materialização resolver uma operação de cada vez resultados intermédios são guardados em disco pipelining resolver todas as operações ao mesmo tempo assim que saia um tuplo de uma operação, é logo passado para o cálculo da operação seguinte, mesmo antes da primeira i ter terminado 17 Materialização Π customer_name (σ balance < 2500 (account) customer) 1. selecção 2. guardar resultado 3. junção 4. guardar resultado 5. projecção 6. mostrar resultado custos em materialização soma dos custos das operações individuais mais o custo de transferência de resultados intermédios 18 9

Pipelining Π customer_name (σ balance < 2500 (account) customer) 1. procurar um registo com balance < 2500 2. fazer junção natural desse registo com os registos em customer 3. projectar os resultados (se houver) para customer_name 4. colocar o resultado (se houver) na saída 5. voltar a 1. e repetir para todos os registos com balance < 2500 não é necessário guardar resultados intermédios menor custo que a materialização mas nem sempre o pipelining pode ser usado p.ex. em ordenações e hash-joins 19 Materialização e pipelining no Postgres select customer_name from depositor natural join account group by customer_name having sum(balance) >= all (select sum(balance) from depositor natural join account group by customer_name); 20 10