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

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

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

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

Tecnologias de Bancos de Dados

Processamento da Consulta. Processamento da Consulta

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

Aula 16. Tópicos Especiais II Banco de Dados. Prof. Dr. Dilermando Piva Jr.

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;

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

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

Organização de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II

Organização de Arquivos. Leandro C. Cintra M.C.F. de Oliveira Thiago A. S. Pardo Cristina D. A. Ciferri

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

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

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

INE5408 Estruturas de Dados. Gerência de Arquivos

Conceitos e Gerenciamento de Memória

Estrutura de indexação de arquivos

Índices. 1. Introdução. Universidade Federal de Pelotas Departamento de Informática Bacharelado em Ciência da Computação Banco de Dados I

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

Universidade Estadual do Oeste do Parana - UNIOESTE Jhonata R.de Peder Marcelo Schuck

Memória. Memória Cache

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

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

DISCO MAGNÉTICO Cabeçote Trilha

Árvores Genéricas de Busca

Introdução. Introdução

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

Ordenação e Busca em Arquivos

Organização e Arquitetura de Computadores I

INSTITUTO FEDERAL CATARINENSE Campus Ibirama

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

Capítulo 11 Sistemas de Arquivos

Pesquisa em Memória Secundária. Prof. Jonas Potros

Gerenciamento de Memória

11/8/2010. Tópicos. Organização e Indexação de Dados em Memória Secundária

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

Introdução. Aula 02. Estrutura de Dados II. UFS - DComp Adaptados a partir do material da Profa. Kenia Kodel Cox

Arquitetura e Organização de Computadores

indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016

ARQUITETURA DE COMPUTADORES UNIDADES DE MEMÓRIA. Prof: Leandro Coelho

ALGORITMOS DE ORDENAÇÃO

Acesso Sequencial Indexado

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

Organização e Arquitetura de Computadores I

Métodos de Busca Parte 1

Prof. Adriano Maranhão

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Acesso a registros. Acesso a Registros. Acesso a registros. Chaves. Forma Canônica da Chave. Forma Canônica da Chave

Modelo Relacional. Josino Rodrigues

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Elementos básicos de uma Arquitetura Computacional

Estruturas de Dados Apresentação

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

Implementação de Diretórios (1)

ORGANIZAÇÃO DE ARQUIVOS INDEXADOS

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

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

Sistemas de Gerência de Bancos de Dados. Módulo 1 - Armazenamento

Organização e Arquitetura de computadores. Memórias

Capítulo 11: Implementação de Sistemas de Arquivos. Operating System Concepts 8th Edition

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

Prof. Sandro Wambier

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

SISTEMA DE ARQUIVOS DO SISTEMA OPERACIONAL

AED2 - Aula 01 Apresentação, estruturas de dados, tabelas de símbolos e hash tables

Programação Estruturada Aula - Introdução a Linguagem de Programação

Organização de Arquivos

Implementação de Sistemas de Arquivos. Na Aula Anterior... Esquema do Sistema de Arquivos. Nesta Aula 31/10/2016. Estrutura de Baixo Nível de um Disco

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ

4 Testes e experimentos realizados 4.1. Implementação e banco de dados

Conhecendo o Disco Rígido ou HD (Hard Disk) Maria de Fátima de Freitas Bueno Marcílio

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

Prof. Benito Piropo Da-Rin. Arquitetura, Organização e Hardware de Computadores - Prof. B. Piropo

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Sistemas Opera r cionais Gerência de Memória

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

A IMPORTÂNCIA DE THREADS NO DESEMPENHO DE APLICAÇÕES

Arquitetura de Computadores

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

Os computadores ditigais podem ser classificados em 5 grupos distintos:

Introdução Métodos de Busca Parte 1

Principais componentes de hardware de um computador. Processador; Entrada; Saída; Barramento; Memória.

Capítulo 6 Nível do Sistema Operacional

Classificação e Pesquisa de Dados. Aula 23 Organização de Arquivos: Arquivos Indexados, Diretos e Arquivos Invertidos

AUMENTO DE PERFORMANCE POR MEIO DA OTIMIZAÇÃO DE BANCO DE DADOS

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

Sistemas de Memória. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Métodos de Ordenação

Análise empírica de algoritmos de ordenação

Ordenação Externa. Ordenação Externa. Ordenação Externa. Ordenação Externa

Pesquisa em Memória Secundária. Prof. Jonas Potros

Arquitetura de Computadores

ACH2025. Laboratório de Bases de Dados Aula 7. Armazenamento Físico. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Métodos de Ordenação Parte I

Estrutura de um computador digital. Gustavo Queiroz Fernandes

Fundamentos de Arquivos e Armazenamento Secundário

HDs. Armazenamento Secundário. HDs. Capacidade do Disco. Organização de Informação em Disco. Organização de Informação em Disco

Transcrição:

o t n e m a n e z a m r A o I ã I ç a D x B e d n I e s o d a d de te i e L e p eli F s i u L or: s s e f o r P

Contato luisleite@recife.ifpe.edu.br professorluisleite.wordpress.com

Como é possível quando escrevemos um comando sql, aparecer a resposta correta?

Armazenamento e indexação Para entendermos melhor essa questão, é necessário começar de baixo para cima, do básico. De certa forma, pode ser vista como uma abordagem bottom-up. (Mas esta é apenas uma comparação). Se começaremos do básico, começaremos de onde?

Aonde armazenamos nossos dados?

Métodos de armazenamento Disco: HD Cd / DVD SSD (Solid State Drive). Fita magnética ou Fita DAT. Memória RAM.

Hierarquia de Armazenamento Armazenamento primário. Mais caro; Operado pela CPU; Mais rápido e mais disponível; Ram e Cache Armazenamento secundário. Mais barato; Precisa da memória para se comunicar com a CPU; Mais lento; Disco e fita magnética.

Disco HD

Disco HD Cheio de partes mecânicas. A rotação é altíssima, embora este fato seja uma vantagem, se o disco sofre um impacto é quase certo que se ele estiver em funcionamento, vai pifar. Embora a agulha se mexa em uma velocidade impressionante, nunca será tão rápido quanto uma memória.

Disco HD A agulha do disco não encosta nele, mas fica a uma distância bem pequena. E como é feita a gravação? O cabeçote ou a agulha magnetiza a superfície, criando um campo magnético para esquerda ou direita. 0 1 0 1 0 1. Quanto mais próximo o cabeçote for do disco, maior a densidade de gravação.

Disco HD A velocidade de rotação também é importante. Mas para gravar e ler, seja em qual velocidade for, é necessário uma estrutura lógica magnética em cima da superfície. Trilha e setores.

Disco HD Estrutura magnética criada depois que o disco sai de fábrica. Círculos magnéticos sobre a superfície. Onde são armazenados os dados.

Disco HD Alguns cuidados para que uma trilha não mexa na outra. A quantidade de trilhas varia.

Disco HD E o setor? Uma parte da trilha que é a menor unidade de leitura e gravação. O setor é lido por um todo ou gravado por um todo. Vários bits aparecem de uma vez só

E o SSD?

Solid State Drive Praticamente sem partes mecânicas. O SSD tem um limite de gravações. Existe o TRIM. Não se deve utilizar toda a capacidade de armazenamento. Menor, mais veloz e consome menos energia. Não indicado para banco de dados.

Então como fica Leitura e gravação no buffer antes. Dado. Registro.

Organização de arquivos. Sequencial. Heap. Hash.

Organização de arquivos Sequencial É um dos métodos mais simples de organização de arquivos. Neste método cada arquivo/registro é armazenado um depois do outro, de maneira sequencial. Isto pode ser alcançado de duas maneiras: Pilha; Classificação.

Organização de arquivos Sequencial: Pilha Os registros são armazenados um depois do outro da mesma maneira que eles são inseridos na tabela. Quando um novo registro é inserido, é colocado automaticamente no fim da fila.

Organização de arquivos Sequencial: Classificação/Organização No método sorted, os arquivos são classificados/organizados (seja na ascendente ou na descentende) a cada vez que eles são inseridos no sistema. Essa classificação/organização pode ser feita tanto por um chave primária por exemplo, quanto por qualquer outra coluna.

Organização de arquivos - Sequencial: Classificação/Organização Toda vez que um novo registro é inserido, ele será colocado no fim da fila. Diferentemente do método pilha, logo depois desta inserção, o registro será organizado para cima ou para baixo, de acordo com o valor de sua chave. Por fim, ele será colocado em sua posição correta.

Organização de arquivos Sequencial: Classificação/Organização

Organização de arquivos Sequencial: Vantagens É uma arquitetura simples quando comparada a outras formas de organização de arquivos, não necessitando de muito esforço no armazenamento dos dados. Quando existirem grandes volumes de dados, este método acaba se tornando rápido e eficiente. É um bom método para geração de reports ou cálculos estatísticos. É um bom método para ser armazenado em fitas magnéticas. Um material considerado barato.

Organização de arquivos Sequencial: Desvantagens No método sorted sempre vai existir um esforço a mais para organizar os registros. Toda vez que for feito um insert, update ou delete por exemplo, o registro será organizado de novo. Todo esse processo leva tempo e deixa o sistema mais lento.

Organização de arquivos HEAP Essa é a forma mais simples de organização, sendo semelhante ao estilo da pilha. O registro é inserido na ordem que chega, não existindo nenhum tipo de classificação ou organização dos registros.

Organização de arquivos HEAP Uma vez que o bloco de dados está cheio, o próximo registro será gravado em um próximo e assim por diante. A diferença deste método para o de pilha sequencial é que a escolha do bloco escolhido não será feita de forma sequencial, mas de forma aleatória. A responsabilidade de guardar os registros e de gerenciá-los fica a cargo do SGBD.

Organização de arquivos HEAP Caso seja necessário uma inserção, atualização ou exclusão, o arquivo deverá ser lido por completo, para daí ser efetuada a transação. No caso específico da exclusão de um registro, ele será excluído do bloco de dados, mas seu espaço não será liberado e por consequência, não poderá ser usado.

Organização de arquivos HEAP A medida que o número de registros aumenta, a memória usada também aumenta e a eficiência cai. O DBA deve periodicamente liberar todo este espaço ocioso.

Organização de arquivos HEAP: Vantagens É um método muito bom quando uma grande quantidade de dados deve ser inserida de uma vez só no banco. É indicado para arquivos pequenos, visto que a busca por eles aqui é mais rápida. A medida que o arquivo cresce, esse tipo de busca se torna muito demorada.

Organização de arquivos HEAP: Desvantagens É ineficiente para bancos de dados muito grandes, pois o tempo para buscar e modificar um registro é muito alto. Deve existir um gerenciamento de memória apropriado para garantir performance. Caso contrário, o sistema ficará cheio de espaço não usado na memória.

Organização de arquivos HASH A função de HASH pode ser tanto uma função matemática simples, como também complexa. Esta função é aplicada em alguma colunas/atributos, sejam elas colunas chave ou não para obter o endereço do bloco. Assim, cada registro é armazenado de forma aleatória, independentemente da ordem em que elas vêm.

Organização de arquivos HASH Neste método, uma função HASH é usada para calcular o endereço do bloco onde os registros vão ser guardados. Quando um registro tem de ser recuperada, o endereço é gerado e, a partir desse endereço, o arquivo inteiro é recuperado. Como cada registro será único, nenhum esforço maior é necessário para fazer esse acesso. Da mesma forma quando um novo registro tem que ser inserido, atualizado ou excluído.

Organização de arquivos HASH

Organização de arquivos HASH

Organização de arquivos HASH: Vantagens Este método é muito útil para sistema de transações online onde a recuperação, inserção ou atualização de dados deve ser rápida. Além disso, este método pode suportar múltiplas transações, já que cada registro é independente dos outros. Não é necessário nenhum tipo de organização ou classificação no método HASH, salvando tempo, memória e desempenho. Já que o endereço é conhecido pela função HASH, acessar qualquer registro é muito rápido.

Organização de arquivos HASH: Desvantagens Usando o método HASH, pode ser possível que alguns registros sejam acidentalmente deletados dependendo da escolha da chave. Ex: A função de HASH usar uma chave que pode se repetir. Já que todos os registros são guardados aleatoriamente, eles estão espalhados na memória. Em razão disso, não existe um uso eficiente do armazenamento primário. Buscar intervalos de dados é ineficiente. Como os dados são armazenados aleatoriamente, buscar um intervalo entre dois valores por exemplo não dará certo. Hardware e software requerido para o gerenciamento de memória é mais custoso neste caso. Programas mais complexos devem ser escritos para que este método seja mais eficiente.

Índices

Índices Os índices são uma estrutura de dados que recebe como entrada uma propriedade de registro (uma chave por exemplo). A partir disso, é possível que os registros sejam achados rapidamente e sem a necessidade de examinar mais que uma pequena fração de todos os registros. O propósito geral de um índice é tornar mais rápido o acesso a registros, com base em certos campos chamados de indexação. Os campos cujos valores o índice se baseia formam, portanto, a chave de pesquisa.

Índices Os índices independem da forma como os arquivos são organizados. Eles são armazenados separadamente em um arquivo auxiliar chamado de arquivo de índice. Em resumo, índices são estruturas auxiliares que tornam a pesquisa baseada em alguns campos, mais eficiente.

Arquivo de índice São construídos sobre campos de indexação escolhidos entre os campos dos registros de um arquivo; Armazenam os valores do campo de indexação associando ao endereço do registro onde o valor ocorre; É um arquivo ordenado pelo campo de indexação de tal forma que é possível encontrar um valor no índice usando pesquisa binária.

Tipos de Índice Denso: Sequência de blocos contendo os registros e os ponteiros de todos os itens no arquivo de dados. Esparso: Tem como vantagem usar menos espaço, mas exige um tempo maior para localizar um registro. Além disso, o ponteiro aponta apenas para o registro âncora de bloco do arquivo de dados.

Estruturas de índice Índice Primário; Índice de Cluster; Índice Secundário; Índices Multiníveis;

Estruturas de índice - Primário Um índice primário é um arquivo ordenado, de tamanho fixo. Os registros armazenados possuem dois campos: o primeiro campo é do mesmo tipo de dado do campochave do arquivo dos dados (já que será o campo que receberá o mesmo valor do campo-chave) e o segundo é um ponteiro para o endereço de bloco de disco.

Estruturas de índice - Primário Existe uma entrada de índice no arquivo de índice para cada bloco do arquivo de dados. Cada entrada no índice tem o valor da chave primária para o primeiro registro do bloco (registro de âncora ou âncora de bloco). O problema com este tipo de índice é a inclusão e exclusão de múltiplos registros, que podem modificar os registros de âncora.

Estruturas de índice - Primário

Estruturas de índice - Cluster Um índice de agrupamento também possui dois campos, sendo o primeiro campo do mesmo tipo do campo de agrupamento e o segundo campo é um ponteiro para um bloco de disco. O primeiro campo possuirá um determinado valor e o segundo campo apontará para todos os dados que possuam o mesmo valor para aquele campo. Este tipo de índice é esparso, pois possui uma entrada para cada valor distinto do campo de indexação e não para cada registro no arquivo.

Estruturas de índice - Cluster Este tipo de índice também possui problemas de inclusão e exclusão de registros. Os registros de dados estão fisicamente ordenados, repetindo-se os mesmos problemas observados para a indexação com índices principais.

Estruturas de índice - Cluster

Estruturas de índice Por que são eficientes? O número de blocos de índices é pequeno em comparação com o número de blocos de dados; Tendo em vista que as chaves são ordenadas, a pesquisa é rápida, podendo se usar um algoritmo de pesquisa binária; O índice pode ser pequeno o bastante para ser mantido permanentemente em buffers da memória principal. Nesse caso, uma pesquisa para uma determinada chave envolve apenas acessos à memória principal, sem precisar de operação de entrada e saída.

Estruturas de índice Secundário Um índice secundário é outro meio para acessar um arquivo de dados, quando um índice primário já existe. Um índice secundário pode ser criado em um campo qualquer único ou em um campo não chave com valores duplicados. Um mesmo arquivo pode ter diversos arquivos e ser indexado por mais de um índice secundário. Em geral são densos.

Estruturas de índice Secundário

Estruturas de índice Resumo

Estruturas de índice Multinível Um Índice Multinível pode ser definido como um índice de índices. No primeiro nível, o arquivo é ordenado, por exemplo, utilizando um índice qualquer conforme já visto anteriormente. Nos demais níveis, é criado um índice primário sobre os níveis anteriores e assim sucessivamente, até que o último índice ocupe apenas um bloco.

Estruturas de índice Multinível É necessário caso o arquivo de índice se torne muito grande. Se este for o caso, é interessante indexá-lo em mais de um nível. Mantendo os índices em arquivos menores, é possível mantelo na memória primária, melhorando dessa forma o desempenho e a eficiência. O problema é que um número maior de índices aumenta logicamente a complexidade do sistema.

Estruturas de índice Multinível A organização então segue: Primeiro nível: arquivo ordenado pela chave de indexação, valores distintos, entradas de tamanho fixo (como se fosse um índice primário). Demais níveis: índice primário sobre o índice do nível anterior e assim sucessivamente até que no último nível o índice ocupe apenas um bloco. Número de acessos a bloco: um a cada nível de índice, mais um ao bloco do arquivo de dados.

Estruturas de índice Multinível

Otimização de Consultas

A importância de uma consulta Por que consultar é tão importante? Essa importância também gira em torno de como consultar? Ou apenas do que consultar? O Big Data e as redes sociais estão aí para ficar. Hoje temos métodos de consultas eficientes?

Como é feita a consulta em um banco Em um banco de dados existe uma separação entre o usuário e o armazenamento físico. O que o usuário busca, tem que ser traduzido e entendido para as partes mais inferiores do banco.

Como é feita a consulta em um banco Uma consulta SQL tem a particularidade de ser voltada para O que e não Como. O Como seria melhor, já que o programador mostra ou pelo menos deveria, que a ideia apresentada é a melhor.

Como é feita a consulta em um banco O que é importante de se notar, é que uma otimização de consulta nunca vai procurar um jeito ótimo de processar a consulta. Em razão de um custo computacional muito grande, o método alcançado será apenas eficiente.

Como é feita a consulta em um banco Passos típicos

Análise léxica, sintática e validação Esse passo se assemelha a uma questão de compiladores. É basicamente analisar o que foi escrito e tentar transformar essa query em uma representação interna computacional.

Análise léxica, sintática e validação É criado então uma estrutura de dados interna com os elementos da sua consulta. Em linhas gerais, significa que o computador conseguiu interpretar e representar sua consulta. Essa representação interna será chamada de árvore ou grafo de consulta.

Otimizador de Consultas Com apenas essa análise, não necessariamente sua consulta será feita da melhor maneira. A consulta possui muitas estratégias de execução possíveis.

Otimizador de Consultas Imaginem o caso de que a consulta foi feita sim da melhor maneira. O que mais pode ser visto? Velocidade; Índices; Como ele pode rearrumar a consulta para ela ser mais rápida.

Otimizador de Consultas Nesta etapa, é onde o computador tenta chegar na consulta considerada razoavelmente eficiente. Chegar na ótima ou perfeita não é interessante, pois o tempo para tentar chegar nesse estado é maior do que a própria consulta. Dessa forma, são usadas heurísticas para chegar numa consulta razoavelmente boa.

Gerador de Código Aqui é a parte que produz um código computacional para a execução de uma consulta. Este código pode tanto ser interpretado ou compilado.

Processador em tempo de execução do banco de dados Esta é a última parte, onde o processador executa o código da consulta. Produz, por fim, o resultado da consulta.

Nosso foco será na otimização

O que vamos usar? Algebra relacional. Decomposição de consultas SQL. A ideia de pegar consultas aninhadas e quebrar ela em consultas independentes, sabendo que o resultado de uma entra no resultado da outra.

Decomposição de consultas Exemplo

Vamos entender isso melhor. Abordagem Bottom-up. Quando disparamos uma consulta, pedimos ao banco que ele faça algumas coisas: Selecionar, ordenar, projetar Esses pedidos viram algoritmos, onde se tem uma programa escrito em alguma linguagem fazendo a mágica requisitada.

Algoritmos para operações

Algoritmo Ordenação Externa Existiria alguma diferença em ordenar alguma coisa no disco e ordenar algo na memória? Seria muito ineficiente se um algoritmo que ordena memória fosse reproduzido igual diretamente no disco. O algoritmo mais propício para ordenar páginas de disco é o merge-sort.

Algoritmo Ordenação Externa Mas enfim, por que ordenação é importante? A ordenação é adequada para manipular arquivos de registros grandes, que são armazenados em disco e que não cabem inteiramente na memória principal. Podendo ser dividida dessa forma em ordenação completa na memória e ordenação externa pro disco.

Algoritmo Ordenação Externa Na ordenação externa é feito o uso de algoritmos de sort para organizar e classificar os blocos de disco. Similar ao que um índice faz. O algoritmo que melhor faz esse tipo de orndenação do tipo merge/sort. Ele pega as páginas de disco, separa, ordena, grava.

Algoritmo Ordenação Externa

Algoritmo Ordenação Externa

Algoritmo Ordenação Externa

E como podemos otimizar ainda mais?

Algoritmo Ordenação Externa Aumentando a memória. Se a memória aumenta é possível paralelizar os processamentos e diminuir os estágios de merge/sort.

Algoritmo Ordenação Externa

Algoritmo para Seleção Vamos agora pensar na seleção em si. São algoritmos de procura que localizam e recuperam os registros que estão de acordo com uma condição de seleção. Tem-se vários algoritmos diferentes, que variam de acordo com a complexidade da seleção e o uso ou nãode índices.

Algoritmo para Seleção Essa seleção é exatamente igual a chave primária. Única e possivelmente com um índice para ela.

Algoritmo para Seleção Essa seleção é exatamente igual a outra chave. Será que alguma coisa muda computacionalmente?

Algoritmo para Seleção Essa seleção pede uma faixa de valor.

Algoritmo para Seleção A questão é que temos seleções diferentes. Quais são as seleções que nós temos e quais algoritmos são mais indicados para cada tipo. Existem algoritmos mais indicados para seleções exatamente iguais, seleções compostas e seleções de faixa de valor.

Algoritmo para Seleção Pesquisa linear; Pesquisa binária; Usando índice primário; Usando chave hash (mais indicado para seleções iguais a chave); Combinado com Índice primário; Usando Índice de Cluster; Usando Índice secundário.

Junção ou Join

Join Como funciona um JOIN? SELECT Tab1.* FROM Tabela1 Tab1 LEFT JOIN Tabela2 Tab2 ON Tab1.Cod = Tab2.Cod Podemos fazer a mesma amarração junto à cláusula WHERE assim como no exemplo abaixo onde estamos pegando os mesmos valores do exemplo acima. SELECT Tab1.* FROM Tabela1 Tab1, Tabela2 Tab2 WHERE Tab1.Cod *= Tab2.Cod

Join de Loop Aninhado for each ti for each tj if match (ti, tj) add-result (ti, tj) Este tipo de algoritmo é um problema muito grande para o disco. Por que?

Join A solução é que você divida a busca de bloco em bloco. Dessa forma eles podem ir um de cada vez para a memória sem sobrecarregar o número de transferências com o disco. for each bi for each bj for each ti in bi for each tj in bj if match (ti, tj) add-result(ti, tj)

SQL para Algebra Relacional

Sql para Algebra Relacional Essa árvore é um conjunto de operações que usa um conceito chamado de pipelining. Ou seja: enquanto uma saída é produzida, é gerado a entrada da operação subsequente.

Árvore de Consulta Pipelining Nesse primeiro passo ele lê a tabela toda. A medida que ele lê a tabela ele já vai entregando pro próximo.

Árvore de Consulta Pipelining Nesse passo é feita a seleção de quem é de 1990 e já passa pro próximo.

Árvore de Consulta Pipelining Pegando as colunas finais e gerando o resultado.

Heurísticas para otimização

Heurísticas para otimização das árvores. É possível que essas árvores de consultas sejam otimizadas. Uma heurística é uma espécie de chute. Seu conceito pode ser definido como podendo ser um algoritmo que encontra boas soluções a maioria das vezes, mas não tem garantias de que sempre encontrará ou um algoritmo que tem processamento rápido, mas não tem provas de que será rápido para todas as situações.

Heurísticas para otimização das árvores. Aplicando heurísticas podemos quebrar seleções e ou mover níveis para mais perto das folhas. Dessa forma, é possível trabalhar com mais liberdade e em blocos menores de consulta, otimizando todo o processo.

Heurísticas para otimização das árvores. Vamos pegar então três tabelas. Nossa projeção final é o título. Categoria.nome vai ser poesia. Temos um Join entre o livro e o pertence. E temos um join entre categoria e pertence. Por fim, temos um filtro que os livros devem ser acima do ano de 1996.

Heurísticas para otimização das árvores. Comecemos do pior jeito. Temos o livro e pertence em um join (ou produto cartesiano) dos dois. Vamos pegar o resultado desse produto e fazer um novo produto cartesiano com categoria. O resultado é uma tabela gigante onde será cruzado tudo com tudo. Este resultado receberá uma enorme seleção que achará a projeção final.

Heurísticas para otimização das árvores. Se aplicarmos heurísticas de quebra de seleções por exemplo, podemos ter o seguinte resultado:

Heurísticas para otimização das árvores. Por fim, podemos aproximar as consultas ao máximo das folhas e quebrar ainda mais.

Até a prova.