A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados

Apresentações semelhantes


Apresentação em tema: "Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados"— Transcrição da apresentação:

1 Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados
AULA 7 Profa. Sandra de Amo GBC053 – BCC

2 Organização dos Dados nos Arquivos
Arquivos Heap (Sequencial) Arquivos Ordenados por uma Chave (de ordenação) Chave = conjunto de atributos Arquivos Agrupados por uma Chave (de agrupamento) Função de agrupamento (= função hash) Métodos de Acesso: utilizam estruturas auxiliares para acelerar a busca Estruturas auxiliares = arquivos de indice BCC

3 O que é um índice ? Select * From Emp E Where E.Nome = ‘João da Cruz’
Arquivo Heap: custo de um scan Arquivo Ordenado por Nome: busca binária Arquivo Hash (por nome): scan no subarquivo Sk onde k = Hash(João da Cruz) Em qualquer das organizações de arquivos, há a possibilidade de se ler muitas páginas de dados até encontrar o registro procurado. João da Cruz, .... Arquivo de Dados

4 O que é um índice ? Select * From Emp E Where E.Nome = ‘João da Cruz’
Pagina 5 slot 4 E se conhecessemos o rid = (Npag,Nsot) do registro procurado ? Carlos, (2,2) João..., (5,4) Arquivo de Indice Um indice é um ARQUIVO AUXILIAR ASSOCIADO AO ARQUIVO ORIGINAL

5 Dados, indices, índices, índices, ...
Consulta: Me dê o livro Database Systems – Ramakrishnan/Gehrke Arquivo de Indice DADOS BCC

6 Arquivos de Indice rid A B C D E F G A D E F rid a b1 c1 d e f g1 a d
(12,1) a b1 c1 d e f g1 a d e f (12,1) (18,5) a b2 c2 d e f g2 a d e f (18,5) a d e f (22,4) (22,4) a b3 c3 d e f g4 chave Arquivo de Indice Endereços obtidos no diretório de arquivos e no diretório de slots das páginas Arquivo de Dados BCC 4/2/2017 6 6

7 Dinâmica geral dos Arquivos de Indice
Busca no arquivo de indice: Páginas deste arquivo são organizadas de modo a permitir a localização rápida das entradas com uma dada chave. Uma vez encontradas rapidamente estas entradas no arquivo de índice, já temos os endereços dos registros de dados associados (seu rid = (N,X)). O local exato no disco onde se encontra a página de número N é encontrado através do diretório de arquivos do disco: fornece o endereço da header page do arquivo. O local exato na página N onde se encontra o slot X do registro procurado é obtido através do diretório de slots da página N BCC 4/2/2017 7 7

8 Como encontrar um registro num Arquivo A conhecendo o rid do registro?
Vai no diretório de arquivos no disco e procura o registro correspondente ao arquivo A, para obter o ponteiro para o primeiro bloco do arquivo. Calcula o endereço do 12º bloco e posiciona a cabeça de leitura neste endereço. Transfere o 12º bloco para o buffer pool Processador de consultas consulta o diretório de slot da página 12 e procura o endereço do registro contido no slot 3, bem como o tamanho (L) do registro contido neste slot. Vai para este endereço de memória e lê L bytes. BCC

9 Arquivos de Indice Otimiza a procura de registros em arquivos, pois o arquivo de indice contém o rid dos registros. Através do rid encontra-se facilmente os registros de dados completos nos arquivos. No arquivo de índice, cada registro é da forma (valores_chave,rid) Chave = conjunto de atributos Se chave contém chave candidata do arquivo, então chave determina unicamente o rid Caso contrário, uma mesma chave pode acessar diversos rids. Exemplo : se chave = {Salário} 4/2/2017 9 9

10 Como as informações são obtidas rapidamente no arquivo de indice ?
Métodos de Acesso Técnicas de organização das páginas dos arquivos de índices B+Trees Tabelas Hash

11 Catálogo do Sistema Metadados Descrição dos dados e índices
Informações sobre visões Catálogo = conjunto de relações (arquivos) contendo todas as informações sobre os arquivos sendo utilizados pelo sistema. BCC 4/2/2017 11 11

12 Catálogo do Sistema Arquivos « Relações », « Atributos », « Restrições », ... Nome da relação, nome do arquivo , estrutura do arquivo Nomes e tipos dos atributos Nome do índice Restrições de Integridade (chave primária, estrangeira) Guardam inclusive registros correspondentes às relações « Relações », « Indices », « Atributos », « Visões », ... Arquivo « Indices » Nome e estrutura de cada índice Chave de cada índice Arquivo « Visões » Nome e código 4/2/2017 12 12

13 Resumo: Arquivo de Indice
O que é ? estrutura auxiliar projetada para agilizar operações de busca, inserção e deleção Em que consiste ? Uma coleção de registros Uma chave de busca k Cada entrada contém informação suficiente para localizar registros de dados contendo a chave de busca k.

14 Vantagens Tamanho: normalmente é bem menor do que o arquivo de dados
Organização optimizada: pode ser sequencial, ordenado ou hashed Método de Acesso rápido: pode ser estruturado usando uma b-tree ou hash (estático, dinâmico)

15 O que armazenar em um índice ?
Registro de Dados = Registro do indice = Chave + Rid Chave do índice !!

16 Indice: como são os registros ?
Alternativa 1 Entrada = registro inteiro de dados Neste caso, a única vantagem do índice é a forma como é organizado: ordenado, hash, com método de acesso ou não Alternativa 2 Entrada = (k,rid), k = chave Chave = conjunto de atributos Alternativa 3 Entrada = (k, lista de rids) Vantagem: ocupa menos espaço. Uma chave acessa diversos registros no arquivo de dados Desvantagem: registro de tamanho variável

17 Como organizar as entradas do índice ?
Entrada = registro Entradas podem ser ordenadas Entradas podem ser organizadas por Hash BCC

18 Exemplo de Indice ordenado
2000 Paulo, 44, 2000 2000 Pedro, 35, 2000 2000 Carlos, 44, 2000 2500 José, 40, 2500 3000 João, 35, 3000 3500 Ilmério, 40, 3500 3500 Rodrigo, 40, 3500 4000 Maria, 30, 4000 4000 Sara, 35, 4000 5000 Sabrina, 31, 5000 Entradas : organizadas de forma ordenada Registros de dados BCC

19 Exemplo de Indice organizado por Hash
Paulo, 44, 2000 2000 H(sal) = 01 2000 Pedro, 35, 2000 Carlos, 44, 2000 2000 José, 40, 2500 2500 H H(sal) = 11 João, 35, 3000 5000 Ilmério, 40, 3500 3000 Rodrigo, 40, 3500 3500 Maria, 30, 4000 3500 H(sal) = 00 Sara, 35, 4000 4000 Sabrina, 31, 5000 4000 Registros de dados Entradas BCC

20 Tipos de indices Relação entre a maneira como são organizados os dados no índice e no arquivo de dados Agrupado – não agrupado Densos – esparsos Primários – secundários Simples - compostos BCC

21 Indices Agrupados (ordenados)
Agrupados : a ordem dos registros é compatível com a ordem das entradas no arquivo de índice. Se entrada é do tipo (chave, rid) então os registros de dados são ordenados por chave. Somente um índice agrupado do tipo (chave,rid) BCC

22 Indices Agrupados (hash)
Agrupados : a função hash utilizada na distribuição dos registros de dados é a mesma função utilizada para distribuir as entradas no arquivo de índice. Se a entrada é do tipo (chave, rid) e arquivo de índice é organizado por hash, utilizando a função hash h(chave), eentão os registros de dados são organizados por hash através dos atributos de chave.

23 Exemplo de Indice Agrupado (ordenado)
= rid 2000 Paulo, 44, 2000 2000 Pedro, 35, 2000 2000 Carlos, 44, 2000 2500 José, 40, 2500 3000 João, 35, 3000 3500 Ilmério, 40, 3500 3500 Rodrigo, 40, 3500 4000 Maria, 30, 4000 4000 Sara, 35, 4000 5000 Sabrina, 31, 5000 Entradas (ordenadas por Sal) Registros de dados (ordenador por Sal)

24 Exemplo de Indice Agrupado (ordenado)
= rid 1000 Maria, 30, 4000 1000 Sabrina, 31, 5000 1000 Pedro, 35, 1000 1500 João, 35, 3000 3000 Sara, 35, 4000 3500 Ilmério, 40, 3500 3500 Rodrigo, 40, 3500 4000 José, 40, 1500 4000 Paulo, 44, 1000 5000 Carlos, 44, 1000 Entradas (ordenadas por Sal) Registros de dados (ordenados por Idade)

25 Exemplo de Indice agrupado
= rid Paulo, 44, 1000 1000 H(sal) = 01 1000 Pedro, 35, 1000 Bucket 1 Carlos, 44, 1000 Bucket 1 1000 José, 40, 1500 1500 H H(sal) = 11 5000 Sabrina, 31, 5000 H(sal) = 00 3000 Rodrigo, 40, 3500 Ilmério, 40, 3500 Bucket 2 Bucket 2 3500 3500 João, 35, 3000 Sara, 35, 4000 4000 Bucket 3 Bucket 3 Maria, 30, 4000 4000 Entradas (organizadas pela função hash h(x) = (x/1000) mod 4, x: valor do atributo Salário Registros de dados (organizados pela função hash h(x) = (x/1000) mod 4, x: valor do atributo Salário

26 Exemplo de Indice não agrupado
= rid Paulo, 44, 1000 1000 Pedro, 35, 1000 H(sal) = 01 1000 Carlos, 44, 1000 1000 José, 40, 1500 1500 H H(sal) = 11 João, 35, 3000 5000 Ilmério, 40, 3500 3000 Rodrigo, 40, 3500 3500 Maria, 30, 4000 3500 H(sal) = 00 Sara, 35, 4000 4000 Sabrina, 31, 5000 4000 Entradas (organizadas pela função hash h(x) = (x/1000) mod 4, x: valor do atributo Salário Registros de dados (ordenados por Salário)

27 Vantagens e desvantagens
Desvantagem (no caso de ordenado) : grande overhead para mover registros a fim de preservar a ordem depois de inserções e deleções. Desvantagem (no caso de hash) : se o hash é estático, se há muitas inserções no banco de dados, tanto a estrutura hash do indice quanto a dos dados deverá ser refeita periodicamente. Se o hash é dinâmico, há overhead para manter a estrutura hash tanto no arquivo de indice quanto no de dados. Vantagem – no caso de agrupado ordenado Seleções do tipo ‘= a’ ou ‘< a’ ... são altamente otimizadas caso os registros sejam ordenados pela chave do indice, e este seja ordenado pela chave. Rids das entradas apontam para registros contíguos, menos páginas são manipuladas. Vantagem – no caso de agrupado hash Seleções do tipo ‘= a‘ são altamente otimizadas Rids das entradas satisfazendo a condição da busca apontam para registros que estão no mesmo bucket, logo menos páginas são manipuladas.

28 Indices Densos Densos : se para cada valor v da chave de busca existe uma entrada (v,rid). Não-denso = esparso

29 Exemplo de Indices denso e não denso
André, 44, 2000 30 Carlos, 44, 2000 31 André Ilmério, 40, 3500 35 José João, 35, 3000 35 Rodrigo José, 40, 2500 35 Maria, 30, 4000 40 Pedro, 35, 2000 40 = rid Rodrigo, 40, 3500 40 Sabrina, 31, 5000 44 Sara, 35, 4000 44 Indice Esparso e Agrupado Indice Denso (em Idade) e não-agrupado Registros de dados (ordenados por Nome)

30 Exemplo de Indice denso onde a chave não é chave da relação
Sabrina, 31, 5000 Sara, 35, 4000 31 (1,1) Pagina 1 Ilmério, 40, 3500 40 (2,1) João, 40, 3000 44 (3,1) José, 40, 2500 Maria, 40, 4000 Pagina 2 Pedro, 40, 2000 Carlos, 44, 2000 Select * From EMP E Where E.Sal = 40 André, 44, 2000 Pagina 3 Rodrigo, 45, 3500 Registros de dados (ordenados por Idade) Pagina 2 é carregada, Página 1 é carregada Página 3 não é carregada, pois Através do indice sabe-se que o 1o registro de Pag. 3 tem Idade = 44

31 Exemplo de Indice denso onde a chave não é chave da relação
Sabrina, 31, 5000 Sara, 35, 4000 31 (1,1) Pagina 1 Ilmério, 40, 3500 40 (2,1) João, 40, 3000 44 (5,1) José, 40, 2500 Pagina 2 Maria, 40, 4000 Pedro, 40, 2000 * Pagina 3 Pagina 4 Select * From EMP E Where E.Sal = 40 Carlos, 44, 2000 André, 44, 2000 Pagina 5 Rodrigo, 45, 3500 Pagina 2, 3, 4 são carregadas, Página 1 é carregada Páginas 5 não é carregada, pois Através do indice sabe-se que o 1o registro de Pag. 5 tem Idade = 44

32 Vantagens e desvantagens
Esparso tem que ser agrupado Vantagens de esparso : arquivo de indice ocupa menor espaço. Desvantagem de esparso : técnicas de otimização de busca são apropriadas para índices densos.

33 Indices Primários e Secundários
Primários : Chave do índice inclue a chave primária da relação. Não há entradas duplicadas (com mesmo valor da chave) Secundários : Não contém chave primária. Pode conter chave candidata Pode conter duplicatas ou não

34 Indices com chaves compostas
Indice em (Idade,Sal) Indice em Idade 31,80 31 33,75 33 42,10 bob 42 10 42 42,20 cal 31 80 42 joe 42 20 sue 33 75 Indice em Sal 10,42 10 20,42 20 75,33 75 80,31 80 Indice em (Sal,Idade)

35 Consultas Consultas com igualdade Consultas Range Idade = 10, Sal = 80
Chave composta (Idade, Sal) Idade = 10, Sal = 80 Arquivos Hashed só são convenientes para consultas com igualdade Consultas Range Idade = 10 Idade < 10, Sal > 80 Arquivos Ordenados são convenientes para consultas com igualdade

36 Indices em SQL CREATE INDEX IndAgeGrau ON Estudantes
With Structure = BTREE, Key = (Idade, Média)


Carregar ppt "Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados"

Apresentações semelhantes


Anúncios Google