Gerenciamento do Disco Gerenciamento do Buffer AULA 2 Profa. Sandra de Amo Gerenciamento de Banco de...
Transcript of Gerenciamento do Disco Gerenciamento do Buffer AULA 2 Profa. Sandra de Amo Gerenciamento de Banco de...
Gerenciamento do DiscoGerenciamento do Buffer
AULA 2
Profa. Sandra de Amo
Gerenciamento de Banco de Dados – BCC
2
Perguntas a serem respondidas:
Como os dados são armazenados no disco
Como são trazidos para memória principal
Como os dados são encontrados nos arquivos
Como a informação é organizada em uma página de dados
04/11/23 BCC- 2013-1 3
Conteúdo da Aula
Gerenciador de Disco (Disk manager)
Gerenciador de Buffer (Buffer Manager)
4
Hierarquia de Memória
Armazenamento Primário : cache e memória principal acesso rápido - opera dados
Armazenamento Secundário Discos magnéticos dados acessados com certa frequência
Armazenamento Terciário fitas dados que não acessados com frequência
04/11/23 5
Vantagens e Desvantagens
Primários versus Secundários e Terciários ST : dispositivos mais lentos ST : mais baratos ST : grande capacidade de armazenamento ST : não volátil
Fitas versus Discos Fita : armazenamento sequencial Fita : acesso mais lento do que o disco
04/11/23 6
Estrutura do Disco
Movimento do braço
SetorTrilha
Bloco
Prato
Cilindro
Rotação
Braço do disco Cabeça
Discussão sobre as unidades Setor: menor unidade. Configuração inerente ao disco, de
fábrica Bloco = conjunto de setores. Tamanho pode ser configurado
quando o disco for inicializado. Uma trilha é composta de um número INTEIRO de setores Um bloco é composto de um número INTEIRO de setores. Um bloco pode ficar parte em uma trilha e parte em outra, mas
seu tamanho não pode ultrapassar o tamanho de uma trilha. Exemplo:
Setor = 512 bytes Trilha = 50 setores = 50*512 bytes = 25600 bytes Podemos configurar um bloco como sendo igual a 4
setores. Logo: tamanho de um bloco = 2048 bytes Neste caso uma trilha contém 12 blocos e meio = 12*2048 + 1024 bytes = 25600 bytes
1 bloco = 6 setores
1 setor
EXEMPLOS
1 bloco = 5,5 setores
1 setor 1/2 setor
NÃO !SIM
1 bloco
1 trilha = 5,5 blocos
1/2 bloco
1 bloco
1 trilha = 33 setores
3 setores
1 bloco
1 trilha = 5 + 1/5 blocos
1/5 bloco
1 bloco
1 trilha = 30 + 6/5 blocos
6/5 setores
04/11/23 9
Disco Memória Principal
Dados precisam estar na memória principal para serem operados.
Unidade de transferência de dados entre disco e memória principal = bloco
Se um único item num bloco é necessário, todo o bloco é transferido
Ler ou escrever um bloco = operação de I/O
Tempo de Acesso = busca + rotação + transferência
04/11/23 BCC- 2013-1 10
Tempos de Acesso
Procura (ou busca) Tempo para mover as cabeças dos discos para a
trilha na qual um bloco desejado está localizado. Rotação
Tempo para que o bloco desejado se posicione sob a cabeça do disco = meia rotação em média; menor do que tempo de busca.
Transferência
Tempo para ler ou escrever no bloco = tempo de rotação do disco sobre o bloco.
04/11/23 BCC- 2013-1 11
Exemplo Disco Seagate Hawk 2XL
2.15GB Tempo de acesso médio = 15msec Tempo médio de procura = 9 msec Tempo máximo de procura = 22msec Tempo de latência rotacional = 5.55 msec Passagem de uma trilha p/ outra = 1 msec 512 bytes por setor, 4569 cilindros, 4 pratos
duplos Taxa de transferência = 5 MB/sec
Acesso a uma locação de memória < 5microsec
04/11/23 BCC- 2013-1 12
Ordem de proximidade em um disco
No mesmo bloco
Na mesma trilha
No mesmo cilindro
Em cilindros adjacentes
04/11/23 BCC- 2013-1 13
Tamanhos
Trilha: tamanho é uma caracteristica do disco Não pode ser alterado
Bloco: Tamanho pode ser configurado quando o
disco é inicializado Deve ser um múltiplo do tamanho de 1 setor
04/11/23 BCC- 2013-1 14
Gerenciamento de espaço no disco
Unidade de dados = 1 página
1 página = 1 bloco no disco
Páginas frequentemente acessadas são armazenadas sequencialmente.
Operação de I/O = leitura e escrita de uma página no disco
04/11/23 BCC- 2013-1 15
Gerenciador de Espaço em Disco
Quais blocos estão em uso ? Que páginas estão em que blocos ? Inserções e supressões de páginas = criação de “buracos”. Páginas são alocadas quando da criação de arquivos. Gerenciamento de espaço livre
1a alternativa Lista de blocos livres. Ponteiro para primeiro bloco livre é estocado num
local do disco. 2a alternativa
Array de 0 e 1 : se o bloco i está livre ou não
04/11/23 BCC- 2013-1 16
Interação Disco e Memória Principal: Esquema Geral
DB
Processador de Consultas
Gerenciador de Buffer
Solicita dados para consulta (leitura) ou alterações (escritura)
Buscaaloca
Informa modif
Propaga modif
04/11/23 BCC- 2013-1 17
Buffer Pool = coleção de páginas
Memória
Principal
Disco
Frame livre
Página
DB
04/11/23 BCC- 2013-1 18
Gerenciador de Buffer
Testa se dado procurado está no buffer Traz página do disco para a memória Procura frame livre para alocar a página Aciona algoritmo para liberar frame Aloca página É informado se modificação foi feita na
página. Caso o frame tiver que ser reutilizado,
propaga modificação no disco.
04/11/23 BCC- 2013-1 19
Algoritmo de Gerenciamento
3 0
Frame no pool
Dirty bit : página suja ou não
Pin-count = número de vezes que a página contida no frame foi solicitada para consultas ou modificações mas não foi liberada ainda.
Inicialmente :
Dirtybit := 0
Pin-count := 0
04/11/23 BCC- 2013-1 20
Algoritmo de Gerenciamento de BufferQuando o processador de consultas aciona o Buffer Manager para alocar uma página na memória principal:
Testa se buffer pool contém a página desejada e incrementa o pin-count do frame onde a página está contida Se não : procura frame com pin-count = 0
Frame com pin-count = 0 : frame está liberado por transações que o utilizavam – nenhuma transação está utilizando a página contida no frame.
Caso não encontre frame com pin-count = 0 Espera até que as transações sendo executadas liberem
páginas em uso.Caso encontre diversos frames com pin-count = 0: utiliza politica de substituição para escolher qual frame será utilizado.
Algoritmo de Gerenciamento de Buffer Uma vez escolhido o frame:
Se dirty-bit = 0, escreve página nova no frame. Se dirty-bit = 1:
escreve página do frame no disco Escreve nova página no frame Incrementa pin-count do frame (já que alguma transação
solicitou a página) Retorna o endereço (em memória principal) do frame
contendo a página solicitada para o processador de consulta.
A cada vez que uma transação libera um frame o pin-count do frame é decrementado.
04/11/23 BCC- 2013-1 21
04/11/23 BCC- 2013-1 22
Políticas de Substituição de Páginas
Que frames com pin-count = 0 escolher para substituição ?
LRU : Least recently used Lista de ponteiros para frames com pin-count = 0 Ponteiros dos frames são adicionados no fim da
lista MRU : Most recently used
Lista de ponteiros para frames com pin-count = 0 Ponteiros dos frames são adicionados no início da
lista Random
Lista de frames livres
Frame_livres=[F1,F2,...,Fn] Politica LRU
Frames livres são adicionados no final da lista O primeiro frame livre F1 é o que foi liberado
menos recentemente. Politica MRU
Frames livres são adicionados no inicio da lista
O primeiro frame livre F1 é o que foi liberado mais recentemente.
Exemplo : LRUBuffer Pool: 10 frames
1 2 3 4 5
6 7 8 9 10
P1 P2 P3 P4 P5
P6 P7 P8 P9 P10
P11
Arquivo Sequencial em DISCO
Lista de Frames Livres = [ F1, ...., F10]
F2 F3 F4 .... F10 F1
F3 F4 .... F10 F1 F2
F1 F2 .... F10
E assim por diante até a pag. 10 ...
Exemplo : MRUBuffer Pool: 10 frames
1 2 3 4 5
6 7 8 9 10
P1 P2 P3 P4 P5
P6 P7 P8 P9 P10
P11
Arquivo Sequencial em DISCO
Lista de Frames Livres = [ F1, ...., F10]
F1 F2 F3 F4 .... F10
E assim por diante até a pag. 10 ...F1 F2 F3 F4 .... F10
04/11/23 26
Gerenciamento de Buffer versus SO
SGBD necessita maior controle quando uma página é escrita no disco – problemas de gerenciamento de transações.
SGBD pode estabelecer o padrão das páginas solicitadas por consultas SQL.
SGBD pode pré-carregar as páginas antes de serem solicitadas
Ler páginas em sequência de blocos é mais rápido do que ler as mesmas em diferentes momentos.
Leitura de sequências de páginas pode ser feita concorrentemente com cálculos na CPU
SGBD requer controle de recuperação de falhas – protocolo WAL.