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

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

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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 da Computação – 2012-2 Sistemas de Banco de Dados

2 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.

3 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)

4 Indices: o que armazenar ? Registro de Dados = Chave Rid + Registro do indice = Chave do índice !!

5 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

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

7 Organização por Hash Páginas do arquivo de índice são agrupadas por buckets Bucket é determinado aplicando-se uma função h ao campo de procura Exemplo: estamos procurando todos os empregados de salário = 5000 Como encontrá-los rapidamente ? Indice organizado por hash no campo Salário Função hash: mod 3 Onde estão os rids dos empregados com salário = 5000 ? 5000 mod 3 = 2 Resposta: bucket 2 Bucket 1 Bucket 2 Bucket 3

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

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

10 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

11 Indices Agrupados Agrupados : a ordem dos registros é compatível com a ordem das entradas no arquivo de índice. Se entrada é do tipo (chave, rid) e o índice é agrupado então os registros de dados são ordenados por chave. Somente um índice agrupado do tipo (chave,rid) Indices do tipo (chave, rid) baseados em Hash, não podem ser agrupados, pois não podem armazenar as entradas ordenadas pela chave.

12 Exemplo de Indice Agrupado Paulo, 44, 2000 Pedro, 35, 2000 Carlos, 44, 2000 José, 40, 2500 João, 35, 3000 Ilmério, 40, 3500 Rodrigo, 40, 3500 Maria, 30, 4000 Sara, 35, 4000 Sabrina, 31, 5000 2000 2500 3000 3500 4000 3500 4000 5000 Registros de dadosEntradas

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

14 Vantagens e desvantagens Desvantagem : grande overhead para mover registros a fim de preservar a ordem depois de inserções e deleções. Vantagem : Seleções do tipo = ou <> são altamente otimizadas caso os registros sejam ordenados de acordo com a chave do indice. Rids das entradas apontam para registros contíguos, menos páginas são manipuladas.

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

16 Exemplo de Indices denso e não denso André, 44, 2000 Carlos, 44, 2000 José, 40, 2500 João, 35, 3000 Ilmério, 40, 3500 Rodrigo, 40, 3500 Maria, 30, 4000 Sara, 35, 4000 Sabrina, 31, 5000 30 31 35 40 44 Registros de dados Indice Esparso e Agrupado 44 Pedro, 35, 2000 Indice Denso e não-agrupado André José Rodrigo

17 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 indices densos.

18 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

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

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

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

22 Estimativas de Custos de Operações em Arquivos

23 18/2/2014 SBD - Mestrado em Computação23 Modelo de Custo Hipóteses B = Número de Páginas R = Número de registros por página D = Tempo médio para ler ou escrever uma página no disco ± 25 msec C = Tempo médio para processar um registro ± 1 a 10 microsec Custo = número de acessos ao disco

24 18/2/2014 SBD - Mestrado em Computação24 Operações Scan : ler todos os registros de um arquivo Páginas devem localizadas no disco e serem carregadas no Buffer Pool Registros devem ser localizados nas páginas Busca com seleção = Páginas com os registros selecionados devem ser localizadas e carregadas Registros devem ser localizados nas páginas Busca com seleção > ou < Páginas com os registros selecionados devem ser localizadas e carregadas Registros devem ser localizados nas páginas

25 18/2/2014 SBD - Mestrado em Computação25 Operações Inserção Identificar a página na qual registro deve ser inserido Carregar esta página no buffer pool Incluir novo registro Escrever a página modificada no disco Deleção Identificar a página contendo o registro Carregar esta página no buffer pool Modificar a página Escrever a página modificada no disco

26 18/2/2014 SBD - Mestrado em Computação26 Lembrando... B = Número de Páginas R = Número de registros por página D = Tempo médio para ler ou escrever uma página no disco Ler = localizar no disco + carregar Escrever = localizar posição no disco + transferir dados para o disco C = Tempo médio para processar um registro no buffer

27 18/2/2014 SBD - Mestrado em Computação27 Estimativas de Custos em Arquivos Heap (Sequenciais) Scan Cada página deve ser lida Processar R registros por página Custo = B(D+RC)

28 18/2/2014 SBD - Mestrado em Computação28 Heap Files Procura (Sel « = « na chave) Atenção: Chave primária ou candidata da tabela !! Encontrou, pára ! Em média, metade do arquivo deve ser escaneado para se encontrar a página correspondente ao registro. Carregar a página Escanear a página à procura do registro Custo = 0.5B(D + RC)

29 18/2/2014 SBD - Mestrado em Computação29 Heap Files Procura (Sel « = « não-chave) Todo o arquivo deve ser escaneado Tempo = B(D+RC) Procura (Sel <) Todo o arquivo deve ser escaneado Tempo = B(D+RC) Inserção Registros são inseridos sempre no final do arquivo Página final deve ser carregada, modificada e escrita de volta no disco Tempo = 2D + C

30 30 Heap Files Deleção de um registro Encontrar a página do registro Remover o registro da página Escrever a página modificada Tempo = Sel + D + C Tempo de localizar o registro e trazer a página correspondente para o buffer pool. Tempo para alterar o registro Tempo para escrever a página no disco

31 18/2/2014 SBD - Mestrado em Computação31 Resumo – Heap Files ScanSel = chave Sel = Nchave Sel <>InsertDelete sel B(RC+D)0.5 B(RC+D) B(D+RC) 2D+CSel + + D + C BD0.5BDBD 2DSel+D

32 Arquivos Ordenados : SCAN Cada página deve ser transferida do disco Tempo de transferência = D Cada página deve ser processada no buffer (R registros são processados) Tempo de processamento = RC Custo total por página = D + RC Custo total da operação SCAN = B(D+RC)

33 Atenção Nas operações de busca em arquivos ordenados, vamos supor que: O arquivo está ordenado por um atributo A A busca é feita pelo atributo A O atributo A pode ou não ser chave da relação onde está sendo feita a busca Caso a busca seja feita por um atributo diferente de A, o custo é o mesmo de um SCAN

34 Arquivos Ordenados : Busca Seleção A = a A : atributo chave (da relação) Atenção: Chave = chave da relação !! Arquivo é ordenado pela chave da relação. 1)Busca binária no arquivo 2)Cada passo = uma operação de input + 1 registro processado no buffer Custo de cada operação de Input = D+C Custo para processar todas as páginas necessárias na busca binária até encontrar a página onde está o registro procurado = ( log 2 B)(D+C) 3) Uma vez encontrada a página onde está o registro, fazer busca binária na página Custo = ( log 2 R)(C) Custo total = ( log 2 B)(D+C) + ( log 2 R)(C)

35 Arquivos Ordenados : Busca Seleção A = a A : atributo não-chave (da relação) Os registros satisfazendo a condição são adjacentes (pois o arquivo é ordenado pelo atributo da seleção ) 1) Localizar o primeiro registro satisfazendo a condição CUSTO = log 2 B(D+2C) + C log 2 R 2) Ler todos os registros subsequentes em ordem sequencial Em média tais registros satisfazendo a condição cabem em uma página Custo = log 2 B(D+C) + C log 2 R + custo de ler o resto Custo total estimado = log 2 B(D+2C) + C log 2 R + RC/2

36 Arquivos Ordenados : Busca Seleção A > a A : atributo chave (da relação) 1) Localizar o primeiro registro Custo = log 2 B(D+C) + C log 2 R 2) Ler todos os registros subsequentes em ordem sequencial Custo = log 2 B(D+C) + C log 2 R + custo de ler o resto Custo estimado= log 2 B(D+C) + C log 2 R + B/2(D+RC)

37 Arquivos Ordenados : Inserção Inserção Suponhamos que o arquivo esteja ordenado pela chave da relação (A) Encontrar a posição onde deve ser inserido o registro (a1, a2, …, an) Custo de uma busca A = a1, onde A é chave da relação = (log 2 B)(D+C) + (log 2 R)(C) Inserir registro (em média, encontra-se na metade do arquivo) Reescrever todos os registros subsequentes da página onde foi feita a inserção (shift nos demais registros) Custo = Busca posição + 0.5B(D + RC) + (D + RC/2) = Custo estimado = (log 2 B)(D+C) + (log 2 R)(C) + 0.5B(D + RC) + (D+RC/2)

38 Arquivos Ordenados : Deleção Deleção: supondo que o arquivo está ordenado pelo atributo de que seleciona os registros a serem removidos Encontrar a página do primeiro registro satisfazendo a condição de deleção Custo = tempo da busca pelo registro (depende da condição da operação de deleção: A = a, A > a, se A é chave da relação ou não) Remover o(s) registro(s) das páginas Escrever a(s) página(s) modificada(s) Reescrever todos os registros subsequentes aos que foram removidos, somente nas páginas onde ocorreram remoções Se for um único registro a ser removido A = a : Custo estimado = Busca registro + (D + RC/2) = (log 2 B)(D+C) + (log 2 R)(C) + (D+RC/2)

39 Importante : Para efeito dos cálculos de custos, estamos supondo que a condição de seleção é especificada no atributo pelo qual o arquivo está ordenado. Caso a condição de seleção não seja sobre o atributo pelo qual o arquivo é ordenado, os custos são os mesmos que para os arquivos Heap.

40 Estimativas de Custos: Arquivos Hashed Páginas do arquivo de índice são agrupadas por buckets Bucket é determinado aplicando-se uma função h ao campo de procura Exemplo: estamos procurando todos os empregados de salário = 5000 Como encontrá-los rapidamente ? Indice organizado por hash no campo Salário Função hash: mod 3 Onde estão os rids dos empregados com salário = 5000 ? 5000 mod 3 = 2 Resposta: bucket 2 Bucket 1 Bucket 2 Bucket 3

41 Resumindo: Páginas no arquivo são agrupadas por buckets Bucket é determinado aplicando-se uma função h ao campo de busca Insert : registro é inserido no bucket apropriado

42 Importante : No caso de Arquivos Hashed, chave = chave de busca na qual é aplicada a função Hash. Nada a ver com chave primária ou candidata.

43 Arquivos Hashed Hash Estático Procura de um registro satisfazendo uma condição no campo de procura Aplica-se função hash no campo de procura Varre-se todas as páginas do bucket correspondente Processo demorado se o bucket contiver muitas páginas Hash Dinâmico Especifica-se um número máximo de páginas por bucket Inserção pode causar overflow num bucket Função hash é adaptada dinamicamente para evitar overflow Hipótese que faremos na estimativa de custos: não há overflow de páginas num bucket – cada bucket não ultrapassa um número máximo de páginas.

44 Arquivos Hashed : SCAN Scan Páginas são ocupadas em 80% Assim: um arquivo de 100 páginas, caso for organizado em hash, vai necessitar de 100/0.80 páginas para seu armazenamento = = 125 páginas !! Espaço livre é deixado nas páginas para evitar overflow no bucket Custo = B(D+RC)/0.80 = 1.25*B(D+RC) Bucket 1Bucket 2 Bucket 3

45 Arquivos Hashed : Busca Seleção A = a A : atributo chave (chave do HASH ) Tempo para identificar a página contendo o registro = H = tempo de cálculo da função hash Assumindo 1 única página no bucket Custo = H + D + RC

46 Arquivos Hashed : Busca Seleção A = a A : atributo não é chave do HASH Todo o arquivo deve ser procurado Custo = 1.25B(D+RC) Seleção A > a Todo o arquivo deve ser procurado Custo = 1.25B(D+RC)

47 Arquivos Hashed : Inserção/Deleção Inserção Página apropriada deve ser encontrada e modificada Custo = C + 2D + H Deleção Encontrar a página do registro a ser removido Remover o registro da página Shift nos demais registros Escrever a página modificada Custo = Sel + D + RC

48 Resumo - Hash ScanSel = chave Sel = Nchave Sel <>InsertDelete sel 1.25B (D+RC) H + D + RC 1.25B(D+R C) H+2D+ CSel + D + RC 1.25BDD 2DSel+D

49 Escolha de uma Boa Organização ScanSel = chave Sel = Nchave Sel <>InsertDelete Heap BD0.5BDBD 2D2D+Sel Ord BDDlog 2 B Dlog 2 B + B/2(D+RC) Dlog 2 B+ B/2(D+RC) Dlog 2 B+ B/2(D+RC) Hash 1.25BDD 2DSel+D

50 Dados e Indices Dados armazenados em arquivo de dados + rid Rid = (página i, slot j) – permite localizar o registro no disco Arquivos de indice estruturados em árvore Folhas : Contém os registros do arquivo de indices Nós intermediários : Contém registros que permitem chegar rápido na folha desejada Objetivo : melhorar a busca de registros

51 Dados e Indices Inserção e deleções são feitas no arquivo de dados A cada inserção ou deleção de um registro de dados, a estrutura do arquivo de indices deve ser ajustada. O ajuste implica em inserção ou deleção de entradas (registros) no arquivo de indice mantendo a ordem do arquivo. Como gerenciar inserções e deleções num arquivo de indice de modo a manter, de forma eficiente, o arquivo de indices sempre ordenado ? Não queremos propagar « shifts » pelas páginas do arquivo de indice até o final do arquivo, a cada inserção ou deleção ! A idéia é só executar « shifts » em poucas páginas !

52 ISAM - Motivação Quais os empregados com salário > 2000 ? Busca binária no arquivo de índice até encontrar o primeiro salário > 2000 Escaneia o arquivo de índice a partir deste ponto e lê os registros correspondentes. Se o arquivo de índice é muito grande : busca binária pode ser dispendiosa.

53 Idéia Criar um segundo arquivo com um registro para cada página do arquivo de indice original Ordenado por chave

54 Como são os nós internos da estrutura ISAM ? P0 P1P2 PiPi+1PmK1... K2K3Ki+1Km Pi = ponteiros que apontam para um núm. de página no nível imediatamente inferior Ki = valor do atributo chave do índice. Exemplo: se o atributo chave é idade então Ki é um valor de idade. K < Ki+1 K Ki+1 Valores K da chave nesta página são < Ki+1 Valores K da chave nesta página são Ki+1

55 Idéia Se quero buscar empregado com status > 7: Não é preciso fazer busca binária nas páginas do arquivo de indice Faz-se a busca binária no segundo arquivo, que é bem menor do que o primeiro arquivo 2*5*7*12*14*17*19*22* 14

56 Idéia (continuação) Segundo arquivo menor que arquivo original Busca binária no segundo arquivo mais rápida Se segundo arquivo não cabe numa página Repetir o processo : cria-se um terceiro arquivo com um registro para cada página do segundo arquivo … Raiz cabe numa página

57 Organização do índice em árvore Páginas auxiliares que permitem chegar rapidamente a uma folha Páginas do arquivo de índice Páginas do Arquivo de Dados

58 Alocação de Páginas em ISAM Páginas primárias do índice: são as folhas Contém os registros do arquivo de índice Páginas de overflow : contém os registros do arquivo de índice que não cabem na página onde deveriam ser inseridos

59 Discussão ISAM é uma estrutura estática Na criação do arquivo Páginas primárias (folhas) são alocadas 20% de cada página é livre para posteriores inserções, tentando adiar ao máximo a criação de páginas de overflow Páginas intermediárias são criadas. Manutenção : Páginas de overflow são alocadas à medida que as páginas primárias do índice ficam cheias em decorrência de inserções.

60 Esquema Geral do Método ISAM Páginas dos arquivos de indices (a partir da 2a camada) Páginas de overflow Páginas primárias – as entradas do arquivo de índice da primeira camada

61 Busca na estrutura ISAM Exemplo: Busca da chave 27 Em cada nível da estrutura: P0,K1,P1,K2,...,Km,Pm m chaves e m+1 ponteiros Se 27 < K1: transfere a busca para a página apontada por P0 Se 27 Km: transfere a busca para a página apontada por Pm Caso contrário: varre-se a página para encontrar chaves K1, K2 tais que Ki 27 < Ki+1 Transfere a busca para a página apontada por Pi

62 Exemplo: Busca de um registro de dados 40 Raiz 51 20 10*15*20*27*33*37*46*40*51*55*63*97* 33 63 Busca da chave 27

63 Inserção de um registro 40 Raiz 51 20 10*15*20*27*33*37*46*40*51*55*63*97* 33 63 Inserção de 23*, 48*, 41*, 42* 23* Página de Overflow 48*41* 42*

64 Deleção de um registro 40 Raiz 51 20 10*15*20*27*33*37*46*40*51* 55* 63*97* 33 63 Deleção de 42*, 51*, 97* 23* Pagina de Overflow 48*41* 42* Procura 51* Nunca são alteradas !!

65 Discussão Se um registro é removido de uma página de overflow e a página ficar vazia, a página é removida – retira-se o ponteiro que apontava para ela. Se um registro é removido de uma página primária e a página ficar vazia: (estratégia mais simples, evita perder muito tempo na manutenção do índice !!) ela fica do jeito como está: não é removida eventuais registros contidos em páginas de overflow não são transferidos para páginas primárias vazias !

66 Custo para chegar em uma folha Número de I/O = número de níveis da árvore Capacidade de cada página = F = número de ponteiros saindo de cada página Total de páginas primárias = N Número de níveis = log F N Logo Custo I/O para chegar em uma folha = log F N

67 Comparação de Custos Custo de uma busca A = a Arquivo de 1 000 000 registros 10 registros por página de dados : total de páginas = 100 000 100 ponteiros em cada página de índice (99 entradas (chave,pt) + ponteiro P0) Arquivo não ordenado por A Scan = 1000 000/10 = 100000 I/0 Arquivo ordenado por A Busca binária = log 2 100000 = 17 I/0 Arquivo estruturado usando método ISAM Arquivo de indice usa alternativa 1 (registro do indice = registro de dados) Custo = log 100 100000 = entre 2 e 3 I/0, pois 100 2 < 100000 < 100 3

68 Vantagens de ISAM ISAM é estático : inserções e deleções afetam somente as folhas. Nós internos não sofrem modificações após uma inserção ou deleção de registros do indice. Logo, páginas internas podem ser manipuladas por outras transações sem problemas de bloqueios, já que nunca são alteradas.

69 Desvantagens de ISAM Possibilidade de cadeias de páginas overflow Páginas overflow geralmente não são ordenadas, a fim de agilizar inserções. Para aliviar este problema : Árvore é criada com 20% de cada folha livre Entretanto, uma vez preenchido este espaço, cadeias de overflow só podem ser eliminadas através de uma total reorganização da estrutura.


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google