Algoritmos para Seleção e Projeção

Slides:



Advertisements
Apresentações semelhantes
Definição do Plano de Execução
Advertisements

Otimização de Consultas em SQL Estimativas de Custos
Álgebra Relacional Marcelo Mendes Manaus
AULA 8 Profa. Sandra de Amo GBC053 – BCC
Indice estruturado por Hash
Cálculo de Custos de Operações I/O – Arquivos Ordenados
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.
Two-Way Merge Sort External Merge Sort
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
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
Estimativas de Custos: Arquivos Heap, Ordenados e Hashed Indices e Métodos de Acesso AULA 13 Profa. Sandra de Amo Programa de Pós-graduação em Ciência.
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
SQL – Comandos de Agregaçã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
SQL – Consultas Aninhadas e Agregação Profa. Sandra de Amo Capitulo 5 – Livro Texto Database Management Systems Ramakrishnan - Gehrke.
Gerenciamento de Arquivos, Páginas e Registros
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 AULA 14 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU Sistemas de Banco de Dados
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
Análise de regressão linear simples: abordagem matricial
SQL – Consultas Básicas
Arquivos Extensíveis.
ÁLGEBRA RELACIONAL Cada operador da álgebra relacional toma uma ou duas relações como sua entrada e gera uma nova relação como saída. São oito os operadores.
Algoritmos para Operação de Junção Loops Aninhados
Marco Antonio Montebello Júnior
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
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
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
Algoritmos de Processamento e Otimização de Consultas
Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC.
Comandos SQL.
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.
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.
Optimização - 1 Optimização de perguntas 1 Processamento de selecções 2 Processamento de junções 3 Manipulação algébrica.
Banco de Dados I Unidade 6 Processamento de Consultas Otimização Lógica.
Algoritmos de Junção – Sort Merge Join e Hash Join
Recuperação de Dados Banco de Dados Carina Farias
Algoritmos para Seleção AULA 23 Profa. Sandra de Amo GBC053 – BCC.
Transcrição da apresentação:

Algoritmos para Seleção e Projeção AULA 15 SISTEMAS DE BANCO DE DADOS

Seleção SELECT * FROM R WHERE R.A op ‘a’ op: =, < , > , ≤ , ≥ Tamanho de R = M páginas Número de tuplas por página = Pr

R não ordenada, não tem índice em A Melhor solução = scan da relação R Custo = M I/Os

R sem índice, mas ordenada por A Busca binária até encontrar a primeira tupla da resposta. Custo da busca = log2M = log21000 = 10 I/Os Scan de R a partir desta tupla para recuperar o resto das tuplas que casam. Custo : depende do número de tuplas que satisfazem a condição da resposta. Se A é chave de R e op é a igualdade: custo = 1 Se A não é chave de R , op é a igualdade, as tuplas com valores iguais do atributo A cabem em X páginas (distribuição uniforme) então Custo = X Em geral Custo total = log2M + custo de escanear o restante da relação R.

R tem índice B+ tree em A Condição de seleção : A > a SELECT * FROM R WHERE A > 34 40 51 63 20 33 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97* Indice agrupado <37, a0, b0> <63, a0, b0> <110, a0, b0> <40, a1, b1> <97, a1, b1> <120, a1, b1> <46, a2, b2> <99, a2, b2> <122, a2, b2> <51, a3, b3> <101, a3, b3> <200, a3, b3> <55, a4, b4> <102, a4, b4> <239, a4, b4>

R tem índice B+ tree em A, Condição de seleção : A > a Índice é agrupado Custo = 2 a 4 I/Os até encontrar a primeira entrada do arquivo de índice. Custo de recuperar todas as tuplas no banco de dados As tuplas satisfazendo a condição de seleção estão contidas em p.M páginas, onde 1 registro de dados = p registros de índices M = número de páginas do arquivo de indice contendo entradas com chave A > a Custo Total de recuperar todas as tuplas: 4 + p.M

R tem índice B+ tree em A Condição de seleção : A > a SELECT * FROM R WHERE A > 34 40 51 63 20 33 10* 15* 20* 27* 33* 37* 40* 46* 51* 55* 63* 97* Indice não agrupado <37, a0, b0> <73, a1, b1> <19, a2, b2> <10, a3, b3> <97, a4, b4> <110, a0, b0> <120, a1, b1> <46, a2, b2> <200, a3, b3> <239, a4, b4> <40, a0, b0> <18, a1, b1> <99, a2, b2> <101, a3, b3> <102, a4, b4> Pid = 2 Pid = 10 Pid = 7

R tem índice B+ tree em A, Condição de seleção: A > a Indice não agrupado: Custo de recuperar todas as tuplas no banco de dados após encontrar a primeira entrada no arquivo de indice pode ser igual ao número de tuplas satisfazendo a condição A > a Solução: ordenar as entradas do arquivo de indice pelo page-id do campo * Entrada do indice = < chave, page-id, slot-id> Custo = número de páginas contendo tuplas com A > a

Exercicio Calcular o custo de: Select * From R where A = a nos seguintes casos: Indice agrupado, B+ tree Indice não agrupado, B+ tree

Exemplo Select * From R where R.name < ‘C%’ M = número de páginas de R = 1000 Nomes são uniformemente distribuídos com relação à letra inicial. 26 letras no alfabeto Portanto: 10% dos nomes satisfazem < ‘C%’ 10000 tuplas satisfazem < ‘C%’ 100 páginas N = número de páginas do arquivo de indice com R.name < ‘C%’ Custo Indice : B+tree agrupado: 4 + 100 = 104 I/Os B+tree não-agrupado: 4 + N + 10000 = 10004 + N I/Os B+tree não-agrupado com arquivo de indice ordenado pelo page-id 4 + 100 + custo de se ordenar o arquivo de indice pelo page-id B+tree não-agrupado: dependendo do número de tuplas satisfazendo a condição de seleção e a distribuição destas tuplas, a melhor solução é não utilizar o indice e fazer um simples scan do arquivo.

R tem indice Hash em A Condição de seleção : A = a Custo de se localizar a página do bucket no arquivo de índice: 1 a 2 I/Os (depende se há diretório de ponteiros) Custo para se obter as tuplas satisfazendo a condição de seleção: depende se o índice é agrupado ou não. Se A = chave de R: custo = 1 I/O

Exemplo Select * From R where R.name = ‘Joe’ M = número de páginas de R = 1000 100 tuplas com R.name = ‘Joe’ Custo de se encontrar o bucket correspondente a ‘Joe’ no indice = 1 a 2 I/O Custo de se obter as tuplas no banco de dados = varia de 1 a 100 I/Os Se as 100 tuplas estão espalhadas em 5 páginas, ordenando-se o indice pelo page-id, pode-se recuperar estas tuplas em 5 I/Os. Logo, o custo total é de 2 + 5 + custo da ordenação.

Condições Gerais de Seleção SELECT * FROM R WHERE R.A op ‘a’ AND R.B op ‘b’ op: =, < , > , ≤ , ≥ Tamanho de R = M páginas Número de tuplas por página = Pr

Condição de seleção em FNC (A11 op a11 OR ... OR An1 op an1) AND (A12 op a12 OR ... OR An2 op an2) AND .... AND (A1k op a1k OR ... OR Ank op ank) Exemplo: (day < 8/9/2002 OR R.name = ‘Joe’) AND (R.id = 5 OR R.name = ‘Joe’)

Caso 1: sem OR Solução 1 : um só indice utilizar indice num atributo que aparece na condição de seleção, que é mais ‘seletivo’ A medida que se recupera as tuplas satisfazendo esta condição elimina-se as tuplas que não satisfazem alguma das outras condições.

Caso 1: sem OR Solução 2: diversos indices Utiliza-se diversos indices, sobre alguns atributos aparecendo na condição de seleção. Para cada condição Ai = ai recupera-se as páginas do arquivo de indice satisfazendo esta condição. Ordena-se as entradas de cada indice pelo page-id Faz-se a intersecção das entradas com os mesmos page-ids Recupera-se as tuplas contidas nas páginas indicadas pelos page-ids e elimina-se aquelas que não satisfazem as outras condições da seleção (para as quais não foram considerados indices).

Exemplo Condição: day < 8/9/2002 AND R.id = 5 AND AND S.age > 35 Usando B+tree em day recupera-se o conjunto das entradas E1 com day < 8/9/2002 Usando um indice Hash em R.id recupera-se o conjunto de entradas E2 com R.id = 5 Ordena-se cada conjunto de entradas pelo page-ids Considera-se a intersecção das entradas pelos rids <a1,p1,s1> ε E1 e <a2, p1, s1> ε E2 então <a1,p1,s1> e <a2, p1, s1> entram na intersecção Recupera-se as tuplas do banco de dadas, através das entradas contidas na intersecção.

Caso 2 : com OR A = a1 OR B = b1 (A = a1 OR B = b1) AND C = c1 Indice em A, não há indice em B Melhor solução : scan (o indice em A não ajuda nada) (A = a1 OR B = b1) AND C = c1 Indice em A, não há indice em B, indice em C Melhor solução: utilizar o indice em C Indice em A, indice em B Melhor solução: recupera-se as entradas no arquivo de indice para A = a1 : recupera-se as entradas no arquivo de indice para B = b1 : Faz-se a união destes dois conjuntos de entradas Ordena-se este conjunto pela page-id

Projeção SELECT DISTINCT R.A, R.B FROM R Duas etapas principais : Remover colunas indesejáveis Eliminar as duplicatas (o mais difícil)

Projeção usando Ordenação Scan de R para produzir as tuplas projetadas (sem os campos indesejáveis) Ordena o resultado, utilizando a combinação de todos os atributos da projeção como chave da ordenação Scan do resultado ordenado para eliminação das tuplas adjacentes repetidas.

Custo Custo total = M + T + 2T (logB-1T + 1) +T Scan de R = M I/Os T = número de páginas produzidas da relação projetada (T = c.M onde c < 1) T depende do número e do tamanho dos campos suprimidos em cada tupla. Custo passo 1 = M + T Custo passo 2 (Ordenação) = 2T (logB-1T + 1) Custo passo 3 = T Custo total = M + T + 2T (logB-1T + 1) +T

Exemplo M = 1000 Cada tupla de M ocupa 40 bytes Cada tupla projetada ocupa 10 bytes Logo T = 250 páginas B = 40 páginas Custo passo 1 = 1250 Custo passo 2 = 2. 250 (log39 250 + 1) = 2. 250 . 2 = 1000 Custo passo 3 = 250 Custo total = 2500 I/Os

Otimização Pode-se projetar as tuplas durante a primeira iteração da ordenação. A partir da segunda iteração da ordenação já vai-se eliminando as duplicatas à medida que são criados os subarquivos ordenados.

Exemplo M = 1000 T = 250 páginas B = 40 páginas Passo 0 da ordenação: 1000 páginas são lidas em memória durante 1000/40 = 25 etapas A cada etapa é criado um subarquivo em disco, ordenado com 40/4 = 10 páginas No total, são 250 páginas escritas no disco, divididas em 25 subarquivos ordenados e projetados com 10 páginas cada um. Passo 1 da ordenação: Há espaço suficiente na memória (40 > 25) para se fazer o merge dos 25 subarquivos e simultaneamente eliminar-se as duplicatas. São lidos 250 páginas Resultado: um único arquivo ordenado, projetado e onde as duplicatas foram eliminadas. Custo total = 1250 + 250 = 1500 I/Os