Compilação, Otimização e Execução de Consultas. Profa. Dra. Cristina Dutra de Aguiar Ciferri

Documentos relacionados
Otimização de Consultas Baseada em Custo. Cristina Dutra de Aguiar Ciferri

Álgebra Relacional e SQL operações de interesse

MATA60 BANCO DE DADOS Aula: Otimização. Prof. Daniela Barreiro Claro

Álgebra Relacional e SQL

- SQL Linguagem de Manipulação de Dados

Processamento Cosequencial: Ordenação Interna e Externa. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Cristina D. A.

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

Uso de Índices na Otimização e Processamento de Consultas. Otimização e Processamento de Consultas. Otimização e Processamento de Consultas

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

Bancos (Bases) de Dados Aula #7 Álgebra Relacional

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

Introdução. Introdução. Álgebra Relacional. Linguagens formais de Consulta Modelo Relacional. O que foi visto até agora...

Ordenação e Busca em Arquivos

Processamento da Consulta. Processamento da Consulta

Introdução a. π LNAME, FNAME (σ SALARY>C (EMPLOYEE))

Álgebra Relacional. Introdução. Introdução. Álgebra Relacional

UTFPR - Universidade Tecnológica Federal do Paraná. Processamento e otimização de consultas

Tecnologias de Bancos de Dados

ACH2025. Laboratório de Bases de Dados Aula 15. Processamento de Consultas Parte 2 Otimização. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

3 Plano de Execução de Consultas

Sumário. Definição do Plano de Execução

Processamento de Produtos ( X )

ÁLGEBRA E CÁLCULO RELACIONAL

OTIMIZAÇÃO DE CONSULTAS RELACIONAIS TRABALHO DE PÓS-GRADUAÇÃO

Processamento de Consultas. Simone Dominico Orientador: Dr. Eduardo Cunha de Almeida PPGINF - UFPR

Tipos de Índices. Profa. Dra. Cristina Dutra de Aguiar Ciferri

Processamento de Consultas. Processamento de Consultas. Processamento de Consultas Distribuídas. Otimização de Consultas

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

Banco de Dados I Módulo VI: Processamento e Otimização de Consultas. (Aulas 1-5) Clodis Boscarioli

Processamento e Otimização de Consultas

Banco de Dados. Cálculo Relacional de Tuplas. João Eduardo Ferreira Osvaldo Kotaro Takai

1ª Prova 23/10/17. Tópicos estudados (todos os assuntos até agora, 12 aulas):

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

MATA60 BANCO DE DADOS Aula 10- Indexação. Prof. Daniela Barreiro Claro

ANÁLISE E PROJETO DE BANCO DE DADOS

Modelo Relacional: Banco de Dados: coleção de relações cada relação tem um nome único.

Bases de Dados BDDAD. Linguagem SQL. Comando SELECT Divisão Algébrica. Nelson Freire (ISEP LEI-BDDAD 2015/16) 1/9

Laboratóriode Bases de Dados Aula12. ÁlgebraRelacional-Revisão. Professora: Fátima L. S. Nunes

Escrita ( W ) do Resultado

Bases de Dados. Algoritmos. Custo de operação. Algoritmos de selecção. Algoritmo de ordenação. Algoritmos de junção.

Administração de. José Antônio da Cunha CEFET-RN

INF70 Gerenciamento de Banco de Dados 2 Ordenação Externa. Ilmério Reis da Silva UFU/FACOM/BCC

O Modelo e a Álgebra Relacional

Profa. Dra. Cristina Dutra de Aguiar Ciferri. Estruturas de Indexação de Dados

Banco de Dados I Módulo III: Linguagens de Consulta. (Aula 1) Clodis Boscarioli

23/05/12. Agenda. Introdução. Introdução. Introdução. Álgebra. Relacional. Cálculo. Relacional

mod._1_teoria_sistemas de bancos de dados.doc

Dois parâmetros essenciais t T tempo de transferência de um bloco. assume-se igual para operações de leitura e escrita

Processamento e Otimização de Consultas

t n e z m r A o o d ç a a d B e L s i u e f F s L e

Álgebra Relacional. Banco de Dados. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Profa. Dra. Cristina Dutra de Aguiar Ciferri

Álgebra Relacional. Banco de Dados. Profa. Dra. Cristina Dutra de Aguiar Ciferri. Profa. Dra. Cristina Dutra de Aguiar Ciferri

de Bases de Dados Exame 2

Banco de Dados Prof. Célio R. Castelano Página 1 de 9. Álgebra Relacional

23/05/12. Consulta distribuída. Consulta distribuída. Objetivos do processamento de consultas distribuídas

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

Modelo Relacional. Josino Rodrigues

Introdução a Bancos de Dados

Álgebra Relacional e Cálculo Relacional

Unipar Universidade Paranaense Disciplina: Banco de Dados II 3ª Série Profª: Késsia Marchi Profa. Késsia Marchi

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

Sumário. Etapas do Processamento de Consultas

Operações fundamentais são suficientes para expressar qualquer consulta. Problema: consultas muito longas. Solução: definição de operações adicionais

Principais Desafios dos SGBDDs. Processamento Distribuído de Consultas. Processamento de Consultas. Componentes do Processamento de Consultas

Banco de Dados. Aula 8 - Prof. Bruno Moreno 16/09/2011

Álgebra Relacional. Linguagem de consultas procedural Conjunto de operações que usam uma ou duas relações como entrada e geram uma relação de saída

Arquiteturas para SGBD. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Algoritmos e Estruturas de Dados II. Ordenação Externa II. Ordenação Externa. Ordenação Externa. Ordenação Externa

Conteúdo Segunda Prova. Revisão Segunda Prova. Relembrando: operações. Álgebra Relacional. Seleção. Projeção. Data da prova: 23/05.

Rápida revisão do Modelo Relacional

ROTEIRO Introdução Álgebra e Cálculo Relacional Operações da Álgebra Relacional Classificação de Operadores da Álgebra Relacional Mapeamento AR -> SQL

Ordenação e Busca em Arquivos

OTIMIZAÇÃO DE CONSULTAS - MYSQL. Prof. Antonio Almeida de Barros Junior

Estrutura de indexação de arquivos

Aula 8 BD1 Álgebra Relacional. Profa. Elaine Faria UFU

TECNOLOGIA EM SISTEMAS PARA INTERNET. Banco de dados em aplicativos WEB. Aula 5

Banco de Dados. Álgebra Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai Marcelo Finger

Douglas Matheus de Souza Prof. Marcel Hugo, Mestre - Orientador

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

ACH2025. Laboratório de Bases de Dados Aula 8. Indexação e Hashing Parte 1. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Banco de Dados. Álgebra Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai

Etapa III - Implementação de Operadores da Álgebra Relacional; Etapa IV - Comparação experimental de varredura sequencial x acesso aleatório

ORDENAÇÃO EXTERNA DE ARQUIVOS: GERAÇÃO DE PARTIÇÕES CLASSIFICADAS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

Introdução ao Banco de Dados. Banco de Dados

de Bases de Dados Exame 1

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

Índice. Índices. Índice simples. Em geral, um índice fornece mecanismos para localizar informações

Métodos de Busca Parte 1

Acesso Sequencial Indexado

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Introdução. Leandro C. Cintra Maria Cristina F. de Oliveira. Solução?

Bancos de Dados. 15. Processamento e O3mização de Consultas

Classificação Externa: Geração de Partições Classificadas

Consulta sobre múltiplas relações

Índices. SCE-203 Algoritmos e Estruturas de Dados II

ALGEBRA RELACIONAL. Álgebra Relacional Conjunto básico de operações para o Modelo Relacional O resultado é uma relação

Transcrição:

Compilação, Otimização e Execução de Consultas Cristina Dutra de Aguiar Ciferri

Decomposição de Consultas Bloco de consulta é uma unidade básica que pode ser traduzida em operadores algébricos e otimizada contém uma única expressão SELECT-FROM-WHERE cláusulas GROUP BY e HAVING, caso necessário Consultas SQL aninhadas identificadas como blocos de consulta distintos

Para todo localizado Visão em 'Stafford', Geral listar o número do projeto, o número do departamento responsável, o sobrenome, endereço e data de nascimento do gerente Definição de uma árvore de consulta responsável equivalente Análise de pelo alternativas departamento. definição de estratégias de - chega acesso ao mesmo Árvore resultado de consulta - otimizada - processa - escolha Árvore de de forma algoritmos de mais consulta eficiente para implementação inicial de operações Fase - existência chamada de de índices Otimização Algébrica π π p P.NUMERO, - p estimativas P.NUMERO, P.DNUM, sobre P.DNUM, E.SNOME, os E.SNOME, dados E.ENDERECO, E.DATANASC E.ENDERECO, E.DATANASC (tamanho de tabelas, seletividade, (3)...) σ P.DNUM = D.DNUMERO x AND D.GERNSS D.GERNSS =E.NSS =E.NSS AND P.LOCALIZAÇÃO Análise = léxica 'Stafford (2) (STAFFORD_PROJS x P.DNUM = D.DNUMERO DEPARTAMENTO) x P.DNUM -cláusulas = D.DNUMERO SQL x e nomes válidos. E Análise (1) sintática SELECT PNUMERO, DNUM, SNOME, DATANASC, ENDERECO σ FROM P.LOCALIZAÇÃO PROJETO - validação x AS = 'Stafford' P, DEPARTAMENTO da gramática. D AS ED, EMPREGADO AS E WHERE Análise P.DNUM=D.DNUMERO semântica AND D.GERNSS=E.SSN AND P.LOCALIZACAO='Stafford ; - nomes usados de acordo com a estrutura P D do esquema. P Conversão para uma árvore algébrica da consulta Etapas no processamento da consulta STAFFORD_PROJS σ P.LOCALIZAÇÃO = 'Stafford (PROJETO) CONTR_DEPT PROJ_DEPT_MGR (CONTR_DEPT x D.GERNSS = E.NSS EMPREGADO) RESULT π P.NUMERO, P.DNUM, E.SNOME, E.ENDERECO, E.DATANASC (PROJ_DEPT_MGR)

Decomposição de Consultas cliente (nro_cli, nome_cli, end_cli, saldo, cod_vend) SELECT nome_cli, end_cli FROM cliente WHERE saldo > ( SELECT max (saldo) FROM cliente WHERE cod_vend = 5); SELECT nome_cli, end_cli FROM cliente WHERE saldo > c SELECT max (saldo) FROM cliente WHERE cod_vend = 5 π nome_cli, end_cli (σ saldo>c (cliente)) ξ max(saldo) (σ cod_vend = 5 (cliente))

Custos da consulta Acessos ao disco; ü Em grandes BD, o custo para acessar dados no disco é muito mais importante, pois o acesso ao disco é muito mais lento em comparação as operações na memória. Tempo de CPU para executá-la; ü As velocidades de CPU melhoraram muito mais rapidamente do que as velocidades do disco. ü Difícil de estimular.

Ordenação Amplamente utilizada no processamento de consultas oferece suporte para a cláusula ORDER BY classifica dados a serem combinados nas operações de junção, união, intersecção elimina duplicatas na operação de projeção Pode ser evitada caso exista um índice que permita acesso ordenado aos registros

Ordenação Externa Funcionalidade classifica registros de arquivos armazenados em disco Restrição tamanho do arquivo é maior do que o tamanho da memória principal disponível Algoritmo típico sort-merge externo

Ordenação externa cláusula ORDER BY arquivos grandes FASE 1: Quebra-Ordenação interna (sort) gera runs (fragmentos ordenados do arquivo original) ordena runs grava runs b = numero de blocos do arquivo nb = espaço disponível de buffer nr = número de runs iniciais nr = b/nb Complexidade ordem = 2 * b (leitura e escrita)

Sort-Merge Externo Fase 1 cria subarquivos ordenados (i.e., runs) a partir do arquivo original Fase 2 combina os subarquivos ordenados em subarquivos ordenados maiores até que o arquivo completo esteja ordenado

Ordenação externa A ordenação em memória externa é utilizada para grandes arquivos que não cabem na memória principal; Por exemplo, a ordenação de 900 megabytes de dados com apenas 100 megabytes de memória RAM, usando o mergesort. Representação da memória e do arquivo a ordenar.

n b ->100 - Espaço dispinível em disco; b ->900- tamanho do arquivo original em blocos 1. 2. 3. 4. Leia Escreva Realiza Repita os 100MB o os a procedimento função dados de dados merge em disco. de que nos 100MB estão Os 9 buffers arquivos na em memória de 100MB ordenados, entrada principal, até para completar representados fundir ordene-os. e O de 900MB armazenar exemplo amarelo de dados, o a a resultado seguir baixo que mostra já agora no passaram buffer a precisam divisão de saída. pela do ser arquivo memória fundidos Quando em estiver em principal, tamanhos um cheio, único foram de 100MB, ordenados, arquivo escreva-o o no tamanho saída. e agora final do encontram-se da arquivo memória, ordenado. em para disco. não ocorrer acesso a disco. Neste caso, é lido o vetor 1. b n b 900 100 = 9

Arquivo ordenado 4. Realiza a função merge nos 9 buffers de entrada para fundir e armazenar o resultado no buffer de saída. Quando estiver cheio, escreva-o no final do arquivo ordenado.

Algoritmo // inicializações i 1 j b k n b m (j/k) // tamanho do arquivo original em blocos // tamanho do buffer em blocos // número de runs iniciais número de subarquivos iniciais gerados, de acordo com o tamanho do arquivo original e o tamanho do buffer de memória merge-sort externo requer espaço disponível nos buffers da memória principal

Algoritmo // fase 1 fase de ordenação enquanto ( i m ) faça { } leia os próximos k blocos do arquivo no buffer ou os blocos remanescentes caso não hajam k blocos ordene os registros que estão no buffer usando algum algoritmo de ordenação interna escreva os dados ordenados em um subarquivo temporário i i + 1 resultado da fase 1 m subarquivos ordenados armazenados em disco

Algoritmo // fase 2 fase de combinação dos subarquivos ordenados i 1 p log k-1 m j m // número de passos merge-sort externo combina os subarquivos ordenados em subarquivos ordenados maiores em um ou mais passos grau de combinação número de subarquivos ordenados que podem ser combinados em cada passo

Algoritmo enquanto ( i p ) faça { n 1 } q (j/(k-1)) enquanto ( n q ) faça { leia os próximos k-1 subarquivos ordenados remanescentes (do passo anterior) um bloco por vez combine os subarquivos ordenados escreva os dados ordenados em um subarquivo temporário } j q; i i + 1 // número de subarquivos a serem escritos no passo resultado da fase 2 arquivo original ordenado armazenado em disco

fase 1 fase 2 (passo 1) fase 2 (passo 2) a 19 g 24 a 19 d 31 c 33 b 14 e 16 d 31 g 24 b 14 c 33 e 16 a 19 b 14 c 33 d 31 e 16 g 24 a 14 a 19 b 14 c 33 d 7 d 21 r 16 d 21 m 3 p 2 d 7 a 14 arquivo original d 21 m 3 r 16 a 14 d 7 p 2 a 14 d 7 d 21 m 3 p 2 r 16 d 31 e 16 g 24 m 3 p 2 r 16 arquivo final ordenado

fase 1 fase 2 (passo 1) fase 2 (passo 2) a 19 g 24 a 19 d 31 b c 33 14 b c 14 33 e 16 d r 21 16 m d 21 3 m r 16 3 p a 14 2 d 7 a p 14 2 arquivo original d 31 g 24 b 14 c 33 e 16 a 14 d 7 d 21 m 3 p 2 r 16 a 19 b 14 c 33 d 31 e 16 g 24 a 14 d 7 d 21 m 3 p 2 r 16 a 14 a 19 b 14 c 33 d 7 d 21 d 31 e 16 g 24 m 3 p 2 r 16 arquivo final ordenado

Custo do Algoritmo ( 2 * b ) + ( 2 * ( b * log d m b ) ) ( 2 * b ) número de acessos a disco na fase 1 cada bloco do arquivo é acessado duas vezes fase de leitura dos dados para a memória fase de escrita dos dados ordenados no disco

Custo do Algoritmo ( 2 * b ) + ( 2 * ( b * log d m b ) ) ) ( 2 * ( b * log d m b ) ) número de acessos a disco na fase 2 cada bloco dos subarquivos é acessado várias vezes, dependendo do grau de combinação fase de leitura dos dados para a memória fase de escrita dos dados ordenados no disco

Custo do Algoritmo b (2 * log m-1 b/n b +1 ) Não incluem o custo da escrita do resultado final b + b (2 * log m-1 b/n b +1 ) Incluindo o custo da escrita do resultado final (Silberschatz, Korth, Sudarshan)

Custo do Algoritmo Qual é o custo de classificar um arquivo que tem 108 páginas, usando apenas 5 páginas da memória principal? b = tamanho do arquivo original em blocos n b = tamanho do buffer em blocos m = (b/n b ) número de runs iniciais (passos) b (2 * log m-1 b/n b +1 ) Sem resultado final b + b (2 * log m-1 b/n b +1 ) resultado final

Seleção Algoritmos dependem da existência de índices das condições de seleção Métodos para seleção simples varredura de arquivos (i.e., file scan) busca linear e binária varredura de índices (i.e., index scan) busca baseada em índice primário, secundário e cluster

Busca Linear Características recupera cada registro do arquivo verifica se os valores dos atributos satisfazem à condição de seleção Vantagem pode ser aplicada a qualquer arquivo Desvantagem pode ser ineficiente

Custo da Busca Linear Cbusca_linear = b b: número de blocos que contêm os registros todos os blocos são varridos Cbusca_linear = (b/2) igualdade na chave primária metade dos blocos é varrido, em média

Exemplo: busca linear Encontre o valor 21; 0 1 2 3 4 5 6 7

Busca Binária Característica recupera registros quando a condição de seleção envolve uma comparação de igualdade no atributo que determina a ordenação do arquivo Vantagem mais eficiente do que busca linear Desvantagem requer a ordenação do arquivo

Custo da Busca Binária Cbusca_binária = log 2 (b) + s/bfr - 1 log 2 (b): custo para localizar o primeiro registro s/bfr : blocos ocupados pelos registros que satisfazem à condição de seleção 1: custo para recuperar o primeiro registro Cbusca_binária = log 2 (b) igualdade na chave primária

Exemplo: busca binária Encontre o valor 49; < >

Índice Busca Baseada em Índice Condição de Seleção Campo Indexado Registros Recuperados primário igualdade chave primária 0 ou 1 desigualdade chave primária 0 ou vários cluster igualdade atributo não chave 0 ou vários secundário igualdade UNIQUE atributo não chave 0 ou 1 0 ou vários desigualdade UNIQUE atributo não chave 0 ou vários

Busca Baseada em Índice Vantagem mais eficiente do que busca linear e busca binária (em geral) Desvantagem necessidade de índice no atributo usado na condição de seleção custo de armazenamento custo de manutenção

Custo com Índice Primário igualdade Cprim_igual = x + 1 x: número de níveis no índice 1: bloco adicional recuperado desigualdade Cprim_des = x + (b/2) b/2: estimativa de que somente metade dos registros satisfazem à condição de seleção

Custo com Cluster Ccluster = x + s/bfr x: número de níveis no índice s/bfr : quantidade de blocos ocupada pelos registros que satisfazem à condição de seleção

Custo com Índice Secundário igualdade Csec_igual = x + s x: número de níveis no índice s: cardinalidade de seleção do atributo indexado s = 1 para atributo UNIQUE desigualdade Csec_des = x + (b I1 /2) + (r/2) b I1 /2: metade dos blocos serão acessados r/2: metade dos registros serão acessados (estimativas)

Seleção Métodos para seleção complexa conjuntiva σ c1 c 2... c n (relação) disjuntiva σ c1 c 2... c n (relação) Algoritmos dependem da existência de índices

Característica Seleção Conjuntiva índice único índice definido sobre um único atributo da condição Passos recupera os registros para o atributo usando qualquer algoritmo de busca verifica se cada registro recuperado satisfaz às demais condições Custo dependente do tipo de índice

Seleção Conjuntiva índice composto Característica dois ou mais atributos envolvidos em condições de igualdade índice composto definido sobre os atributos combinados Comparações Ligadas com AND Passo recupera os registros usando o índice composto Custo dependente do tipo de índice

Seleção Conjuntiva intersecção de ponteiros Característica índices com ponteiros de registros definidos nos atributos das condições individuais Passos varre cada índice em busca de ponteiros para registros que satisfaçam à condição individual intersecta todos os ponteiros recuperados recupera os registros propriamente ditos σ(aluno) (centro=ctc OR curso=sin) AND sexo=f AND ia>9,5

Seleção Conjuntiva intersecção de ponteiros Característica índices com ponteiros de registros definidos sobre somente alguns dos atributos das condições individuais Passo adicional verifica se cada registro recuperado satisfaz às demais condições

Seletividade Razão entre o número de registros que satisfazem à condição de seleção e o número de registros da relação Funcionalidade determina a ordem na qual as condições da seleção conjuntiva devem ser testadas Otimizador de consultas escolhe como primeiro atributo a ser buscado o que possui a condição mais seletiva

Seleção Disjuntiva Registros que satisfazem à condição disjuntiva são a união dos registros que satisfazem cada condição individual Característica índices não definidos sobre todos os atributos da condição Passo recupera os registros usando busca linear Custo = Cbusca_linear

Seleção Disjuntiva Característica índices definidos sobre cada um dos atributos da condição Passos recupera os registros para cada condição individual usando o índice específico aplica a operação de união para eliminar duplicatas Custo dependente do tipo de índice

Relações cliente (nro_cli, nome_cli, end_cli, saldo, cod_vend) vendedor (cod_vend, nome_vend) pedido (nro_ped, data, nro_cliente) pedido_peça (nro_ped, nro_peça) peça (nro_peça, descrição_peça)

Exemplos Consulta σ nro_cli = 4 (cliente) σ nro_cli > 4 (cliente) σ cod_vend = 5 (cliente) linear Busca binária índice primário; igualdade na chave primária linear binária índice primário; desigualdade na chave primária linear cluster secundário

Exemplos Consulta σ cod_vend = 5 saldo > 100 (cliente) σ nro_cli = 4 cod_vend = 5 (cliente) σ nro_cli = 4 cod_vend > 5 (cliente) linear Busca seleção conjuntiva índice único linear intersecção de ponteiros seleção conjuntiva índice único linear índice composto intersecção de ponteiros seleção disjuntiva

Relação Cliente Número de registros (r) = 10.000 Número de blocos de disco (b) = 2.000 Fator de bloco de disco (bfr) = 5 Índice primário em nro_cli (chave primária) número de níveis (x) = 4 número médio de registros que satisfazem à condição de igualdade (s) = 1

Relação Cliente Índice secundário em cod_vend número de níveis (x) = 2 número de blocos no nível de folha (b I1 ) = 4 número de valores distintos (d) = 125 número médio de registros que satisfazem à condição de igualdade (s) = 80 Índice secundário em saldo número de níveis (x) = 3 número de blocos no nível de folha (b I1 ) = 4

Consultas Consulta σ nro_cli = 4 (cliente) linear Busca binária índice primário; igualdade na chave primária C busca_linear = (b/2) = 2.000/2 = 1.000 C busca_binária = log 2 (b) = log 2 (2.000) = 11 C prim_igual = x + 1 = 4 + 1 = 5 escolha do otimizador de consultas

Consultas Consulta σ nro_cli > 4 (cliente) linear Busca índice primário; desigualdade na chave primária C busca_linear = b = 2.000 C prim_des = x + (b/2) = 4 + (2.000/2) = 1004 escolha do otimizador de consultas

Consultas Consulta Busca σ cod_vend = 5 (cliente) linear secundário C busca_linear = b = 2.000 C sec_igual = x + s = 2 + 80 = 82 escolha do otimizador de consultas

Consultas Consulta σ cod_vend = 5 saldo > 100 (cliente) linear Busca seleção conjuntiva índice único C busca_linear = b = 2.000 C sec_igual cod_vend = x + s = 2 + 80 = 82 C sec_des saldo = x + (b I1 /2) + (r/2) = 3 + (4/2) + (1.000/2) = 3 + 2 + 500 = 505 otimizador de consultas busca primeiro por cod_vend = 5

Consultas Consulta σ nro_cli = 4 cod_vend = 5 (cliente) linear Busca seleção conjuntiva índice único C busca_linear = b = 2.000 C prim_igual nro_cli = x + 1 = 4 + 1 = 5 C sec_igual cod_vend = x + s = 82 otimizador de consultas busca primeiro por nro_cli = 4

Projeção π lista_atributos ( relação ) lista_atributos inclui chave primária recupera os registros considera somente os atributos desses registros constantes em lista_atributos número de registros: mesmo número da relação original

Projeção π lista_atributos ( relação ) lista_atributos não inclui chave primária recupera os registros considera somente os atributos desses registros constantes em lista_atributos ordena os registros elimina as duplicatas cláusula DISTINCT

Produto Cartesiano R S n registros e j atributos m registros e k atributos Relação produzida grau: j + k número de registros: n * m Otimizador de consultas deve evitar a operação, substituindo-a por outras operações equivalentes

Modelo

Operação Produto Cartesiano: permite combinar informações de duas relações quaisquer. Representado por r x s. (devedor x emprestimo) = (nome_cliente, devedor.num_emprestimo, nome_agencia, emprestimo.num_emprestimo, total)

Operações sobre Conjuntos Operações união intersecção diferença Características Duas relações são compatíveis quando: possuem o mesmo grau seus atributos possuem os mesmos domínios (os domínios dos i-ésimos atributos de cada relação são os mesmos) atuam sobre relações compatíveis eliminam duplicadas da relação resultado

Operações sobre Conjuntos Passos ordena cada uma das relações (mesmo atributo) varre e combina os registros ordenados concorrentemente elimina duplicatas mantendo somente um dos registros repetidos na relação resultado

Operações sobre Conjuntos Operação R S Relação resultado registros pertencentes a R, a S ou a ambas R e S R S tanto a R quanto a S R S a R mas não a S

R S Operação UNIÃO: considere a seguinte consulta: selecionar todos os nomes de clientes que tenham um empréstimo, uma conta ou ambos. Deve-se utilizar as relações depositante e devedor. (depositante) (devedor) (estão nas 2 relações)

R S Operação de Interseção de conjuntos: captura todas as tuplas que encontram-se em uma relação r, e que também encontram-se na relação s.

R S Operação Diferença entre conjuntos: sendo r e s duas relações, r-s tem como resultado o conjunto de tuplas que estão na relação r, mas não encontram-se na relação s.

Referência SILBERSCHATZ, Abraham; KORTH, Henry F.; SUDARSHAN, S. Sistema de banco de dados. Rio de Janeiro: Elsevier, 2006

Exercícios 1 1- Descreva brevemente os processos envolvidos no processamento de uma consulta. 2 - Por que utilizar ordenação? 3 - Qual a importância de mergesort externo? 4 - Suponha por simplicidade, dado o tamanho do buffer em blocos é n b = 5 e o tamanho do arquivo original em blocos é b = 108. Calcule o custo do algoritmo. a) Os números de passos iniciais M. b) Calcule o total de acesso SEM considerar o resultado final. c) Como no anterior, considere o resultado final.

Exercícios 2 5 Considere a seguinte consulta SQL para o nosso banco de dados bancário: Select T.nome_agência From agência T, agência S Where T.ativos > S.ativos and S.cidade_agência = Brooklyn Escreva uma expressão da álgebra relacional que seja equivalente a essa consulta.