Cálculos de Custos I/O-Arquivos Hash
Introdução aos Métodos de Acesso
RESUMO AULA 7
Profa. Sandra de Amo
GBC053 – BCC
2012-2
Lembrando:

Páginas do arquivo de índice são agrupadas por buckets
Bucket 1

Bucket 2
Bucket 3
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
Resumo - Hash
Scan
Sel =
chave
Sel =
Sel
Nchav <>
Insert Delete
sel
e
1.25B
(D+RC)
1.25BD
H+D+
RC
D
1.25B(D+ 1.25B(D+ H+2D+ C Sel +
RC)
RC)
D + RC
1.25BD 1.25BD
2D
Sel+D
Escolha de uma Boa Organização
Scan
Sel =
chave
Sel =
Sel <>
BD
0.5BD
BD
BD
Ord
BD
Dlog2B
Dlog2B
Dlog2B +
B/2(D+RC)
1.25BD
D
Delete
2D
2D+Sel
Nchave
Heap
Hash
Insert
1.25BD
1.25BD
Dlog2B Dlog2B
+
+
D
D
2D
Sel+D
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.
Idéia
Criar um segundo arquivo
com um registro para cada
página do arquivo de
indice original


<primeira chave da
página, ponteiro da
página>
Ordenado por chave
Como são os nós internos da estrutura
ISAM ?
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.
P0 K1 P1 K2 P2 K3
...
Pi
K < Ki+1
Valores K da chave nesta página
são < Ki+1
Ki+1 Pi+1 ...
Km Pm
K ≥ Ki+1
Valores K da chave nesta página
são ≥ Ki+1
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
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.
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
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
Exemplo: Busca de um registro de
dados
Busca da chave 27
Raiz
40
20
10* 15*
51
33
20* 27*
33*
37*
40*
46*
63
51*
55*
63*
97*
Inserção de um registro
Inserção de 23*, 48*, 41*, 42*
Raiz
40
20
10* 15*
51
33
20* 27*
23*
Página de Overflow
33*
37*
40*
46*
48*
41*
42*
63
51*
55*
63*
97*
Deleção de um registro
Deleção de 42*, 51*, 97*
Procura 51*
Raiz
Nunca são
alteradas !!
40
20
10* 15*
51
33
20* 27*
23*
Pagina de Overflow
33*
37*
40*
46*
48*
41*
42*
63
51*
55*
63*
97*
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 = logF N

Logo Custo I/O para chegar em uma folha = logF N
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 = log2 100000 = 17 I/0
Arquivo estruturado usando método ISAM






Arquivo de indice usa alternativa 1 (registro do indice = registro de
dados)
Custo = log100 100000 = entre 2 e 3 I/0, pois
1002 < 100000 < 1003
Download

Slides de Resumo da Aula