Baixe o app para aproveitar ainda mais
Prévia do material em texto
Banco de Dados Ìndices anderson fonseca Agenda - Índices Índices Uma estrutura de dados que melhora o desempenho nas operações de recuperação de dados em uma tabela, com aumento de espaço em disco e o custo na escrita em disco. Podem ser criados utilizando uma ou mais colunas, fornecendo a base para a busca de registros ordenados e acessos eficientes. O espaço em disco para o registro dos índices é menor do que os requeridos pelas tabelas (abstração de outros detalhes das tabelas). Índices Em um banco de dados relacional, um índice é a cópia de uma parte da tabela. Alguns bancos de dados estendem o poder de indexação, permitindo que índices sejam criados em funções ou expressões. Um índice pode ser criado como upper(nome), que guardaria somente nomes com “caixa alta” no índice. Outra opção são índices “filtrados”, onde as entradas são criadas somente para os registros que satisfazem uma expressão condicional. Índices Funções: - Manter a integridade dos dados; - Otimizar o acesso a dados; - Melhorar a junção das tabelas; - Classificar resultados; - Agregar dados; Índices Manter a integridade dos dados; O uso de chaves únicas e primárias para reforçar o nível de unicidade de seu repositório/deposíto de dados por tabela. Diferenças entre chaves únicas e primárias Primary Key - Só uma chave primária pode existir por tabela; - Não pode conter valor NULL; - Fornece um meio de recuperar qualquer linha específica em uma tabela; - Se uma coluna de AUTO INCREMENTO for definida, ela deve ser parte da chave primária. Índices Manter a integridade dos dados; O uso de chaves únicas e primárias para reforçar o nível de unicidade de seu repositório/deposíto de dados por tabela. Diferenças entre chaves únicas e primárias Unique Key É possível possuir mais de uma chave única por tabela; É permitido valor NULL, onde cada valor NULL é único, ou seja (NULL != NULL). Índices Manter a integridade dos dados; Alguns bancos de dados suportam chaves estrangeiras para garantir a integridade dos dados, o que não é visto como índice, e sim, como constraints. Um requisito comum de certas implementações é que um índice exista tanto na tabela destino quanto na tabela de origem, para permitir o gerenciamento das chaves estrangeiras. Índices Otimizar o acesso a dados; Índices permitem que o otimizador elimine a necessidade de examinar todos os dados da tabela durante a consulta. Restringindo o número de linhas acessadas, o desempenho da consulta pode ser significantemente melhorado. Isto é o uso mais comum de índices. Índices Melhorar a junção das tabelas; Além de restringir dados em uma determinada tabela, outra proposta no uso de índices é a junção de tabelas de forma eficiente. O uso de ínidices em uma coluna de junção, fornece um benefício imediato de performance. O domínio na criação de índices para a junção de tabelas de forma correta é fundamental para a performance em qualquer banco relacional. Índices Classificar resultados; Indices guardam os dados de forma ordenada. Isto torna o uso de índices bastante comum na seleção de registros de modo ordenado. É possível ordenar registros utilizando o operador ORDER BY. Porém sem o uso de índices o banco de dados executa um filesort internamente nas linhas da tabela recuperadas. O uso de índices de forma predefinida fornece um significante aumento de performance em sistemas de alta concorrência onde são requisitadas centenas ou milhares de consultas por segundo, já que os resultados são pré- ordenados. Índices Agregar dados; Ìndices podem ser utilizados como meio de calcular resultados agregados mais facilmente. Exemplo: A soma do total de todos os pedidos em um determinado período pode ser mais eficientemente executado com um índice na data e na quantidade de pedidos. Índices Terminologia Tecnicas Teoria por trás de como as estruturas de dados permitem várias abordagens para acesso as informações. Essa técnicas incluem B-tree, B+tree, R-tree e Hash. Cada técnica utiliza conceitos diferentes dependendo de cada objetivo. Implementações Como os bancos de dados implementam as várias técnicas de estrutura de dados. Por exemplo o MyISAM implementa B-tree diferente do InnoDB. Índices Tipos de índices suportados pelo MySQL - Chave prímária - Chave única - Secundários não únicos Suportados pela maioria dos bancos de dados relacionais. - Suporte a full-text e índices espaciais, dependendo do storage engine. Outras implementações de índices são possíveis: - Fractal Tree (http://en.wikipedia.org/wiki/TokuDB), - InfiniDB (http://infinidb.org/) - Infobright (http://www.infobright.com/) Índices Teoria das estruturas de dados B-tree (http://en.wikipedia.org/wiki/B-tree) Suporta inserção de dados, manipulação e seleção através do gerenciamento de um conjunto de nós em uma estrutura como a raiz de uma árvore. Existem dois tipos de nós: Nós de índice – organizam e direcionam em um sentido ordenado para os dados guardados nas folhas. Diferente de Árvore Binária. Índices Teoria das estruturas de dados B-tree (http://en.wikipedia.org/wiki/B-tree) Índices Teoria das estruturas de dados B+tree (http://en.wikipedia.org/wiki/B%2B_tree) Suporta inserção de dados, manipulação e seleção através do gerenciamento de um conjunto de nós em uma estrutura como a raiz de uma árvore utilizando uma chave. Índices Teoria das estruturas de dados B+tree Índices Teoria das estruturas de dados Hash (http://en.wikipedia.org/wiki/Hash_table) É um algoritmo aplicado a um determinado valor para retornar um ponteiro único ou posição dentro de um repositório de dados. O benefício na utilização de uma tabela Hash, está no tempo de recuperação de uma determinada linha. Índices Teoria das estruturas de dados Hash (http://en.wikipedia.org/wiki/Hash_table) Índices Teoria das estruturas de dados R-Tree Suporta gerenciamento geométrico baseado em tipos de dados. Permite a indexação multidimensional como coordenadas geográficas, retângulos e polígonos. Índices Teoria das estruturas de dados R-Tree Árvore para retângulos 2D Índices Ìndices de uma coluna Não existe uma limitação prática na criação de índices. Criando um índice: ALTER TABLE <NOME DA TABELA> ADD INDEX [NOME_DO_INDICE] (NOME_DA_COLUNA) Índices Ìndices de uma coluna Índices Ìndices de uma coluna Índices Ìndices de uma coluna Índices Ìndices de uma coluna Índices Ìndices de uma coluna Índices Ìndices de uma coluna Dúvidas ???
Compartilhar