GBC053–Gerenciamento de Banco de Dados
Introdução à Organização de Arquivos
(Métodos de Acesso/Índices)
Ilmério Reis da Silva [email protected]
www.facom.ufu.br/~ilmerio/gbd UFU/FACOM/BCC
UFU/FACOM/BCC GBD Página:.2
Organização de Arquivos
OBJETIVOentender como os dados podem ser organizados no espaço em disco para alcançar bom desempenho e segurança nas operações com SGBDs
UFU/FACOM/BCC GBD Página:.3
Fundamentos de Organização de Arquivos
Def.: Organização de arquivos é o método de dispor os registros em um arquivo armazenado em disco
Exemplo: tuplas do esquema empregado(nome, idade,
salario) serão armazenadas em registros de um arquivo em disco podendo ser organizados por:
– Opção 1: ordem cronológica de inserção
– Opção 2: ordem de nome
– Opção 3: ordem de idade
– Opção 4: aleatoriamente
UFU/FACOM/BCC GBD Página:.4
Fundamentos de Organização de Arquivos
Características de dados em memória externa
• Unidade de acesso é página (ex: 4KB, 8KB)
• Custo dominante é I/O, cujo tempo gasto é fixo para qualquer página acessada aleatoriamente
• Acesso sequencial diminui tempo pois diminui o número médio de seeks por registro
UFU/FACOM/BCC GBD Página:.5
Fundamentos de Organização de Arquivos
Interação entre subcamadas do SGBDO Método de acesso a arquivo:
recebe do processador de consultas
requisição de registro, índice, ou arquivo gerencia páginas alocadas para cada arquivo manipula registros
gerencia espaço disponível nas páginas
solicita páginas ao Gerenciador de buffer pool que: verifica se página está no buffer
se necessário, solicita página ao Gerenciador de
espaço em disco que
– faz acesso ao disco e transmite/recebe páginas para/do buffer pool.
UFU/FACOM/BCC GBD Página:.6
Tipos de Organização de Arquivos
• Arquivo não ordenado (heap file)
registros distribuídos aleatoriamente nas páginas • Arquivo ordenado (sorted file)
registros armazenados em ordem da chave de busca
• Arquivo hash
registros armazenados em buckets indexados por uma função hash H : KeySet → BucketSet
• Arquivo indexado
registros armazenados de acordo com uma estrutura de índice
• Índice
UFU/FACOM/BCC GBD Página:.7
Índices
Principais Características de Índices
• chave de busca, simples ou composta estrutura facilita busca baseada na chave • facilita atualização e remoção aleatória
• entretanto, múltiplos índices causam sobrecarga na inserção, atualização e remoção
REGISTRO
UFU/FACOM/BCC GBD Página:.8
Índices
Principais Características de Índices
• ALTERNATIVAS PARA DADOS ASSOCIADOS À CHAVE – DATA ENTRY
(1) <registro>: este é o arquivo indexado ou arquivo hash
(2) <k + rid> : chave mais um identificador de registro (3) <k + lista_rids>: chave mais uma lista de
identificadores
• temos no máximo um índice com alternativa (1) • agrupado / não agrupado (Figuras)
• denso / esparso (Figura)
UFU/FACOM/BCC GBD Página:.9
Índices
Principais Características de Índices
UFU/FACOM/BCC GBD Página:.10
Índices
Principais Características de Índices
• Exemplo de índice agrupado - Alternativa 2
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 2000 2000 2500 3000 3500 4000 3500 4000 5000 Registros de dados Entradas
UFU/FACOM/BCC GBD Página:.11
Índices
Principais Características de Índices
• Exemplo de índice não agrupado - Alternativa 2
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 2000 2000 2500 5000 3000 3500 3500 4000 Registros de dados Entradas H 4000 H(sal) = 01 H(sal) = 11 H(sal) = 00
UFU/FACOM/BCC GBD Página:.12
Índices
Principais Características de Índices
• Índice denso: se para cada valor k da chave de busca existe uma entrada (k,rid)
UFU/FACOM/BCC GBD Página:.13
Índices
Principais Características de Índices
UFU/FACOM/BCC GBD Página:.14
Índices
Principais Características de Índices
• Índice Primário : chave do índice é chave primária do arquivo
UFU/FACOM/BCC GBD Página:.15
Índices
Principais Estruturas de Índices
Índice Baseado em Hash
• Chave
• Entradas (Alternativa1=<registro>,
Alternativa2=<k+rid>, ou Alternativa3=<k+lista_rids>) distribuídas em buckets, cada um formado por uma
página primária e zero ou mais páginas de overflow • Função Hash
H : KeySet → BucketSet
acesso em um ou dois I/O se hash sem overflow
UFU/FACOM/BCC GBD Página:.16
Índices
Principais Estruturas de Índices
UFU/FACOM/BCC GBD Página:.17
Índices
Principais Estruturas de Índices
UFU/FACOM/BCC GBD Página:.18
Índices
Principais Estruturas de Índices
Índice Baseado em Árvore
• Chave
• Folhas: Entradas Daddos (Alternativa 1=<registro>, Alternativa 2=<rid>, ou Alternativa 3=<rid>*)
UFU/FACOM/BCC GBD Página:.19
Índices
Principais Estruturas de Índices
Índice Baseado em Árvore
Características das Árvores B+
• Caminho de tamanho uniforme da raiz até a folha • Fan-out(F) é o número de filhos do nó interno
• Profundidade (h) é o tamanho do caminho raiz/folha • Se Número de folhas = N, então
N = Fh
Logo, h = logF N
UFU/FACOM/BCC GBD Página:.20
Comparação de Desempenho de Arquivos
• Operações• Modelo de Custo: tempo e quantidade de operações de IO • Alternativas de arquivos/indices
UFU/FACOM/BCC GBD Página:.21
Comparação de Desempenho de Arquivos
Operações em Arquivos e Índices• Scan (varredura) : ler todos os registros de um arquivo
Carregar páginas do arquivo no Buffer Pool
Buscar registros em cada página
• Busca Igual (com predicado de igualdade k = valor)
Carregar páginas com os registros selecionados
Buscar registros em cada página
Se o predicado não for pela chave, então realizar varredura
• Busca por faixa de valores (intervalo i.e. (x < k < y))
Carregar páginas com os registros selecionados
Buscar registros em cada página
Se o predicado não for pela chave, então realizar varredura.
UFU/FACOM/BCC GBD Página:.22
Comparação de Desempenho de Arquivos
Operações em Arquivos• Inserção :
Identificar página na qual o registro deve ser inserido
Carregar a página no Buffer Pool
Incluir registro na página
Escrever página modificada no disco
• Remoção :
Identificar a página contendo o registro
Carregar a página no Buffer Pool
Modificar a página
Escrever a página modificada no disco
UFU/FACOM/BCC GBD Página:.23
Comparação de Desempenho de Arquivos
Modelo de Custo
• 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
• C = tempo médio para processar um registro • H = tempo para aplicação da função Hash
• C e H da ordem de nanosegundos e D microsegundos, logo o tempo gasto com IO é o custo dominante
• Essas considerações são simplistas mas suficientes para mostrar a intuição das estruturas que serão estudadas em detalhe.
UFU/FACOM/BCC GBD Página:.24
Comparação de Desempenho de Arquivos
Alternativas a serem comparadas
• Arquivo não Ordenado (Heap) • Arquivo Ordenado
• Arquivo Indexado Hash (sem overflow) • Arquivo Indexado Arvore B+
• Arquivo Heap + Indice Hash usando Alternativa 2 • Arquivo Heap + Indice Arvore B+, não agrupada,
usando Alternativa 2
UFU/FACOM/BCC GBD Página:.25
Comparação de Desempenho de Arquivos
Considerações Gerais
• Um registro resultante da busca com igualdade
• Arquivo Ordenado com compactação após remoção • Arquivo Hash com 80% de ocupação buckets, logo,
tamanho total do arquivo = 1,25B páginas
• Árvore Agrupada (Alternativa 1) com 67% ocupação, logo, folhas na árvore ocupam 1,5B páginas
• Índices Árvore B+ não agrupada e Hash, usando
Alternativa 2 com entradas de tamanho igual a 10% do registro e 67% de ocupação, logo:
– média de 6,7R entradas por página/bucket
– Hash com 0,15B páginas
UFU/FACOM/BCC GBD Página:.26
Comparação de Desempenho de Arquivos
Considerações sobre o
Arquivo não Ordenado (Heap)
• Inserção por ordem de chegada, sempre no final do arquivo
UFU/FACOM/BCC GBD Página:.27
Comparação de Desempenho de Arquivos
Arquivo Heap
• Varredura(Scan)
Ler todas as páginas (BD)
Processar R registros por página (BRC) Tempo = B (D + RC)
UFU/FACOM/BCC GBD Página:.28
Comparação de Desempenho de Arquivos
Arquivo Heap
• BuscaIgual (predicado k = valor)
Ler metade do arquivo(em média) para encontrar a página do registro (0,5BD)
Processar todos registros de cada página lida à procura do
registro especificado (0,5BRC)
Tempo = 0,5B(D + RC)
Custo IO = 0,5B
UFU/FACOM/BCC GBD Página:.29
Comparação de Desempenho de Arquivos
Arquivo Heap
• BuscaFaixa(intervalo )
Ler todas as páginas do arquivo em busca de registros do
intervalo (BD)
Processar todos os registros de cada página (BRC) Tempo = B(D + RC)
Custo IO = B
UFU/FACOM/BCC GBD Página:.30
Comparação de Desempenho de Arquivos
Arquivo Heap
• Inserção
Ler a última página do arquivo (D) Inserir o registro na página(C)
Rescrever a página modificada no disco(D) Tempo = D + C + D = 2D + C
UFU/FACOM/BCC GBD Página:.31
Comparação de Desempenho de Arquivos
Arquivo Heap
• Remoção
Localizar o registro a ser removido(BuscaIgual) Remover o registro da página (C)
Rescrever a página modificada no disco (D)
Tempo = BuscaIgual + C + D
Custo IO = 0,5B + 1
Obs: lembrando que o arquivo não será comprimido após remoção.
UFU/FACOM/BCC GBD Página:.32
Comparação de Desempenho de Arquivos
Considerações sobre o Arquivo Ordenado
Inserção em ordem de uma chave de busca
Busca binária no arquivo para localizar um registro
Reorganização das páginas após inserção Compactação do arquivo após remoção
UFU/FACOM/BCC GBD Página:.33
Comparação de Desempenho de Arquivos
Arquivo Ordenado
• Varredura(Scan)
Ler todas as páginas (BD)
Processar R registros por página (BRC) Tempo = B (D + RC)
Custo IOs = B
UFU/FACOM/BCC GBD Página:.34
Comparação de Desempenho de Arquivos
Arquivo Ordenado
• BuscaIgual (predicado k = valor)
Localizar página por meio de busca binária no
arquivo (Dlog2B)
Processar 2 registros(extremidades) por página em
cada passo da busca (2Clog2B)
Realizar busca binária na página onde se localiza o
registro (Clog2R) Tempo = (D+2C)log 2B + C log2R Custo IO = log 2B
UFU/FACOM/BCC GBD Página:.35
Comparação de Desempenho de Arquivos
Arquivo Ordenado
• BuscaFaixa(intervalo )
Localizar a página e registro de início do intervalo (BuscaIgual)
Ler todos os registros subsequentes na página (0,5RC)
Ler as demais páginas e processar seus registros até encontrar o final do intervalo. Seja #pgm o número adicional de páginas com registros no intervalo (#pgm (D+RC))
Tempo = BuscaIgual + #pgm D + RC (#pgm + 0,5)
Custo IO = log2B + #pgm
UFU/FACOM/BCC GBD Página:.36
Comparação de Desempenho de Arquivos
Arquivo Ordenado • Inserção
Localizar página para inserção (BuscaIgual)
Seja 2C o custo de inserir e realizar o shift dos registros
na página.
Ler todas as páginas a partir da posição corrente(metade do arquivo) (0,5BD)
Realizar o shift em todas as páginas a partir da posição corrente (0,5B 2C)
Reescrever todas as páginas a partir da posição corrente (0,5BD)
Tempo = BuscaIgual + B (D + C)
Custo IO = B + log2B
UFU/FACOM/BCC GBD Página:.37
Comparação de Desempenho de Arquivos
Arquivo Ordenado
• Remoção
Localizar página para remoção (BuscaIgual)
Seja 2C o custo de remover e realizar o unshift dos registros em uma página
Ler as páginas à partir da posição corrente(metade do
arquivo) (0,5 BD)
Realizar a remoção e unshift dos registros (0,5B 2C)
Reescrever todas as páginas a partir da posição corrente (0,5BD)
Tempo = BuscaIgual + B (D + C) Custo IO = B + log2B
UFU/FACOM/BCC GBD Página:.38
Comparação de Desempenho de Arquivos
Arquivo Ordenado
• Observações:
A reorganização do arquivo na inserção e remoção torna essas operações muito custosas
Uma alternativa é adiar a reorganização para ser feita
periodicamente, prejudicando as buscas
Mas a principal solução deste problema é o arquivo
indexado que mantem o custo de busca na mesma ordem e diminui consideravelmente o custo de inserção e
remoção
UFU/FACOM/BCC GBD Página:.39
Comparação de Desempenho de Arquivos
Considerações sobre o
Arquivo Indexado baseado em Hash
Hash com entradas do tipo Alternativa 1
Hash sem overflow
Páginas são ocupadas em 80%, pois espaço livre é
deixado nas páginas para evitar overflow no bucket em caso de novas inserções
Número de páginas no hash será:
UFU/FACOM/BCC GBD Página:.40
Comparação de Desempenho de Arquivos
Arquivo Hash
• Varredura(Scan)
Ler todas as páginas (1,25 BD)
Processar 0,8R registros em cada página (1,25B 0,8RC)
Tempo = 1,25B(D + 0,8RC)
UFU/FACOM/BCC GBD Página:.41
Comparação de Desempenho de Arquivos
Arquivo Hash
• BuscaIgual (predicado k = valor)
Calcular a função hash (H)
Ler o bucket (D)
Assumindo varredura média de metade do bucket para localizar o registro (0,4RC)
Tempo = H + D + 0,4RC
Custo IO = 1
UFU/FACOM/BCC GBD Página:.42
Comparação de Desempenho de Arquivos
Arquivo Hash
• BuscaFaixa(intervalo)
Ler todas as páginas do hash em busca de registros do intervalo (1,25BD)
Processar os registros de cada página (1,25B 0,8RC) Tempo = 1,25B(D+0,8RC)
Custo IO = 1,25B
UFU/FACOM/BCC GBD Página:.43
Comparação de Desempenho de Arquivos
Arquivo Hash
• Inserção
Calcular a função hash (H)
Ler o bucket (sem overflow) (D)
Inserir registro no final do bucket (C) Reescrever o bucket (D)
Tempo = H + C + 2D Custo IO = 2
UFU/FACOM/BCC GBD Página:.44
Comparação de Desempenho de Arquivos
Arquivo Hash
• Remoção
Localizar o registro (BuscaIgual)
Remover o registro, reorganizando o bucket (0,4RC)
Escrever o bucket modificado (D) Tempo = BuscaIgual + 0,4RC + D
Custo IO = 2
UFU/FACOM/BCC GBD Página:.45
Comparação de Desempenho de Arquivos
Considerações sobre o
Arquivo Indexado baseado em Arvore B+ Agrupada
Entrada nas folhas do tipo Alternativa 1
Folhas são ocupadas em 67%, pois espaço livre é deixado
para novas inserções
Número de folhas = B / 0,67 = 1,5B Número de registros por folha = 0,67R
Seja F o número médio de filhos de cada nó interno,
UFU/FACOM/BCC GBD Página:.46
Comparação de Desempenho de Arquivos
Arvore B+ Agrupada
• Varredura(Scan)
Ler todas as folhas da árovore (1,5BD)
Processar os registros de cada folha (1,5B 0,67RC)
Tempo = B(1,5D + RC)
UFU/FACOM/BCC GBD Página:.47
Comparação de Desempenho de Arquivos
Arvore B+ Agrupada
• BuscaIgual (predicado k = valor)
Localizar folha por meio de busca em profundidade na
árvore (DlogF1,5B)
Em cada nível, processar uma média de log
2(F-1)
entradas para localizar ponteiro:
((logF1,5B)(Clog2(F-1)))
Localizar registro na folha por meio de busca binária
(Clog20,67R)
Tempo = logF1,5B (D + Clog2(F-1)) + C log2 0,67 R
Custo IO = logF1,5B
UFU/FACOM/BCC GBD Página:.48
Comparação de Desempenho de Arquivos
Arvore B+ Agrupada
• BuscaFaixa(intervalo)
Localizar início do intervalo (BuscaIgual)
Ler folhas subsequentes até encontrar o final do intervalo
(1,5 #pgm D)
Processa entradas de cada folha (1,5 #pgm 0,67RC)
Tempo = BuscaIgual + 1.5 #pgm D + R #pgm C
= BuscaIgual + 1,5 #pgm (D + 0,67RC) Custo IO = BuscaIgual + 1,5 #pgm
UFU/FACOM/BCC GBD Página:.49
Comparação de Desempenho de Arquivos
Arvore B+ Agrupada
• Inserção
Localizar a folha onde será inserido o novo registro
(BuscaIgual)
Inserir nova entrada na folha, fazendo um shift de suas entradas. Seja 2C o custo do shift (2C)
Reescrever a folha (D)
Tempo = BuscaIgual + 2C + D Custo IO = 1 + BuscaIgual
UFU/FACOM/BCC GBD Página:.50
Comparação de Desempenho de Arquivos
Arvore B+ Agrupada
• Remoção
Localizar a folha onde será removido o registro (BuscaIgual)
Remover a entrada na página, fazendo um unshift de suas
entradas. Seja 2C o custo do unshift (2C)
Reescreve folha (D)
Tempo = BuscaIgual + 2C + D Custo IO = 1 + BuscaIgual
UFU/FACOM/BCC GBD Página:.51
Comparação de Desempenho de Arquivos
Considerações sobre o
Arquivo Heap com Índice baseado Arvore B+ não agrupada
• A entrada nas folhas da árvore ocupa 10% do registro • 67% de ocupação das folhas
• Portanto serão 6,7R entradas em cada folha
• O número de folhas da ávore será N= 0,1B/0,67 = 0,15B
UFU/FACOM/BCC GBD Página:.52
Comparação de Desempenho de Arquivos
Arquivo Heap + Arvore B+ não agrupada • Varredura(Scan)
Varrer o índice não é viável, pois seria necessário
varrer as folhas e mais um IO no arquivo de dados para cada registro i.e.,
Custo IO > BR
Então, varrer o heap
Tempo = B (D + RC)
Custo IOs = B
UFU/FACOM/BCC GBD Página:.53
Comparação de Desempenho de Arquivos
Arquivo Heap + Arvore B+ não agrupada • BuscaIgual (predicado k = valor)
Localizar a folha por meio de busca em profundidade
na árvore (DlogF0.15B)
Processar uma média de log
2(F-1) entradas por nível
(logF0.15B)(Clog2(F-1))
Localizar a entrada na folha por meio de busca binária
(Clog26,7R)
Ler a página de dados (D) e processar o registro (C) Tempo = log
F0,15B(D + Clog2(F-1)) +
Clog26,7R+D+C
UFU/FACOM/BCC GBD Página:.54
Comparação de Desempenho de Arquivos
Arquivo Heap + Arvore B+ não agrupada • BuscaFaixa(intervalo)
Localizar início do intervalo (BuscaIgual)
Ler folhas subsequentes até encontrar o final do
intervalo (0,15D #pgm)
Processar cada entrada (C R #pgm) Para cada entrada na folha:
Ler página no arquivo de dados (D R #pgm)
Processar cada registro (C R #pgm)
Tempo = BuscaIgual + 0,15D#pgm + R#pgm (D + 2C) Custo IO = BuscaIgual + #pgm (0,15 + R)
UFU/FACOM/BCC GBD Página:.55
Comparação de Desempenho de Arquivos
Arquivo Heap + Arvore B+ não agrupada • Inserção
Localizar a folha onde será inserida a nova entrada e página de dados onde será inserido o novo registro (BuscaIgual)
Inserir nova entrada na folha, fazendo um shift de suas entradas (2C)
Inserir novo registro na página do heap (C)
Reescrever folha e página de dados (2D)
Tempo = BuscaIgual + 2D + 3C
Custo IO = 2 + BuscaIgual
UFU/FACOM/BCC GBD Página:.56
Comparação de Desempenho de Arquivos
Arquivo Heap + Arvore B+ não agrupada • Remoção
Localizar a folha de onde será removida a nova entrada e página de dados de onde será removido o novo registro (BuscaIgual)
Remover nova entrada na folha, fazendo um unshift de suas entradas (2C)
Remover novo registro na página de dados (C)
Reescrever folha e página de dados (2D)
Tempo = BuscaIgual + 3C + 2D
Custo IO = 2 + BuscaIgual
UFU/FACOM/BCC GBD Página:.57
Comparação de Desempenho de Arquivos
Considerações sobre
Arquivo Heap com Índice baseado Hash
• Hash com entradas do tipo Alternativa 2
• Hash sem overflow
• Páginas são ocupadas em 67%
• Entrada de tamanho 10% do registro
• Número de páginas no hash será: 0,1B/0,67 = 0,15B
UFU/FACOM/BCC GBD Página:.58
Comparação de Desempenho de Arquivos
Arquivo Heap + Hash
• Varredura(Scan)
Varrer o hash não é viável, pois seria necessário varrer os buckets e mais um IO no arquivo de dados para cada entrada i.e.,
Custo IO > BR
Então, varrer o heap
Tempo = B (D + RC)
Custo IOs = B
UFU/FACOM/BCC GBD Página:.59
Comparação de Desempenho de Arquivos
Arquivo Heap + Hash
• BuscaIgual (predicado k = valor)
Calcular a função hash (H)
Ler o bucket (sem overflow) (D)
Varrer em média metade do bucket para localizar a entrada (C 3,35R)
Ler página no arquivo de dados (D)
Processar o registro (C)
Tempo = H + D + 3.35RC + D + C
= H + 2D + C(3,35R + 1) Custo IO = 2
UFU/FACOM/BCC GBD Página:.60
Comparação de Desempenho de Arquivos
Arquivo Heap + Hash
• BuscaFaixa(intervalo)
Ler todos os buckets do hash e realizar um IO para cada entrada do intervalo ou fazer uso do heap
Vamos comparar o número de IO de duas alternativas
Varrer o Hash e ler heap direto: (0,15B + R #pgm)
Varrer o Heap: B
Logo se #pgm < (0,85B/R) será viável o uso do hash,
caso contrário, ou quando não se conhece a estatística, usa-se o heap, i.e.:
Tempo = B(D + RC) Custo IO = B
UFU/FACOM/BCC GBD Página:.61
Comparação de Desempenho de Arquivos
Arquivo Heap + Hash
• Inserção
Calcular a função hash (H)
Ler o bucket (sem overflow)(D)
Ler página no arquivo de dados (D)
Inserir registro no final da página (C)
Inserir entrada no final do bucket (C)
Reescrever o bucket e a páginia de dados(2D)
Tempo = H +2D + 2C + 2D = H + 4D + 2C
UFU/FACOM/BCC GBD Página:.62
Comparação de Desempenho de Arquivos
Arquivo Heap + Hash
• Remoção
Calcular a função hash (tempo = H)
Ler o bucket (D)
Ler página no arquivo de dados(D)
Localizar e remover entrada no bucket (3,35RC)
Localizar e remover registro na página (2C)
Regravar o bucket e a páginia de dados (2D)
Tempo = H +2D + 3,35RC + 2C + 2D
= H + 4D + C(3,35R + 2) Custo IO = 4
UFU/FACOM/BCC GBD Página:.63
Comparação de Desempenho de Arquivos
TEMPO VARREDURA BUSCAIGUAL BUSCAFAIXA INSERÇÃO REMOÇÃO
HEAP 2D + C SORTED HASH FILE H + D + 0,4RC C + 2D + H BTREE FILE BTREE INDEX HASH INDEX H + 4D + 2C B (D + RC) O,5B (D + RC) B (D + RC) BuscaIgual + D + C B (D + RC) (D+2C)log2B + C log2R BuscaIgual + D#pgm + RC(#pgm + 0,5)BuscaIgual + B(D+C) BuscaIgual + B(D+C) 1,25B (D + 0,8RC) 1,25B (D + 0,8RC) BuscaIgual + 0,4RC + D B (1,5D + RC) logF1.5B (D + Clog2(F-1)) + Clog20,67R BuscaIgual + 1,5#pgm (D + 0,67RC) BuscaIgual + D + 2C BuscaIgual + D + 2C B (D + RC) logF0,15B (D + Clog2(F-1)) + Clog26,7R + D + R BuscaIgual + 0,15D#pgm + R#pgm(D + 2C) BuscaIgual + 2D + 3C BuscaIgual + 2D + 3C B (D + RC) H + 2D + C(3,35R + 1) B (D + RC) C(3,35R+1)H + 4D +
UFU/FACOM/BCC GBD Página:.64
Comparação de Desempenho de Arquivos
IO VARREDURA BUSCAIGUAL BUSCAFAIXA INSERÇÃO REMOÇÃO
HEAP
B
0,5B
B
2 0,5B + 1
SORTEDB
HASH FILE1,25B
1
1,25B
2
2
BTREE FILE1,5B
BTREE INDEXB
HASH INDEXB
2B
4 4log
2B
log
2B + #pgm B + log
2B B + log
2B
log
F1,5B
log
1,5#pgm
F1,5B +
log
F1,5B
1 +log
F1,5B
1 +1+ log
F0,15B
1 + log
F0,15B +
#pgm(0,15 + R)
3 +
UFU/FACOM/BCC GBD Página:.65
Organização de Arquivos
Considerações finais• Uso em ajuste(tunning) de SBD
• Geram impactos positivos e negativos na carga de trabalho do SGBD
• Analisar frequencia de operações • Sobrecarga de espaço em disco
• Hash tem melhor desempenho em busca com predicado de igualdade
• Árvore B+ tem melhor desempenho em busca por intervalo
• Algumas consultas podem ser avaliadas usando somente o índice, por exemplo: employee(eid, dno, age, hobby, sal) SELECT avg(sal) FROM employee
UFU/FACOM/BCC GBD Página:.66
Organização de Arquivos
Considerações finais – Alguns exemplos de uso de índices agrupados, usando o esquema
UFU/FACOM/BCC GBD Página:.67
Organização de Arquivos
Considerações finais – Alguns exemplos de uso de índices agrupados
UFU/FACOM/BCC GBD Página:.68
Organização de Arquivos
Considerações finais• Chaves compostas em caso de Árvores B+ podem usar prefixo como chave
UFU/FACOM/BCC GBD Página:.69
Organização de Arquivos
Considerações finais• Especificação de índices no SQL 99 CREATE INDEX IndAgeGrau
ON Estudantes
WITH STRUCTURE = BTREE,
KEY = (Idade, Média)
UFU/FACOM/BCC GBD Página:.70
Organização de Arquivos
UFU/FACOM/BCC GBD Página:.71