340 likes | 524 Views
Gerenciamento do Disco Gerenciamento do Buffer. AULA 2 Profa. Sandra de Amo Gerenciamento de Banco de Dados – BCC. ARQUITETURA GERAL DE UM SGBD RELACIONAL. Hierarquia de Memória. Armazenamento Primário : cache e memória principal acesso rápido - opera dados Armazenamento Secundário
E N D
Gerenciamento do DiscoGerenciamento do Buffer AULA 2 Profa. Sandra de Amo Gerenciamento de Banco de Dados – BCC
ARQUITETURA GERAL DE UM SGBD RELACIONAL
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
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 10/30/2014
DB Interação Disco e Memória Principal: Esquema Geral Processador de Consultas Solicita dados para consulta (leitura) ou alterações (escritura) Informa modif Gerenciador de Buffer aloca Propaga modif Busca 10/30/2014
Conteúdo da Aula • Gerenciador de Disco (Disk manager) • Gerenciador de Buffer (Buffer Manager) BCC- 2013-1 10/30/2014
Perguntas a serem respondidas: Gerenciador de Disco • Como os dados são armazenados no disco • Como os dados são encontrados no disco Gerenciador de Buffer • Como são trazidos para memória principal • Como os dados são organizados em uma unidade (página) de dados. • Como os dados são localizados em uma unidade (página) de dados.
Estrutura do Disco Braço do disco Cabeça Setor Trilha Bloco Prato Cilindro Rotação Movimento do braço 10/30/2014
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 setor 1 setor 1/2 setor 1 bloco = 5,5 setores 1 bloco = 6 setores 1/2 bloco 1 bloco 1 trilha = 5,5 blocos 1 bloco 3 setores 1 trilha = 33 setores EXEMPLOS SIM NÃO ! 1/5 bloco= 1 bloco 1 trilha = 5 + 1/5 blocos 6/5 setores 1 bloco 1 trilha = 30 + 6/5 blocos
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 10/30/2014
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. BCC- 2014-1 10/30/2014
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 BCC- 2014-1 10/30/2014
Ordem de proximidade em um disco • No mesmo bloco • Na mesma trilha • No mesmo cilindro • Em cilindros adjacentes BCC- 2014-1 10/30/2014
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 10/30/2014
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 10/30/2014
Gerenciador de Espaço em Disco • Quais blocos estão em uso ? • Quais dados estão em quais blocos ? • Inserções e supressões de dados = criação de “buracos”. • Blocos são alocados 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 10/30/2014
DB Buffer Pool = coleção de “frames” na memória principal Memória Principal Página Frame livre Disco 10/30/2014
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. BCC- 2013-1 10/30/2014
Algoritmo de Gerenciamento Frame no pool 3 0 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 10/30/2014
Algoritmo de Gerenciamento de Buffer Quando 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. BCC- 2013-1 10/30/2014
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. 10/30/2014
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 10/30/2014
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.
Um frame começa a ser usado… quando uma página é carregada na locação de memória correspondente ao frame. Assim: Suponha dois frames F1 e F2 com as seguintes ações ocorridas: • tempo 1: Página P1 é trazida do disco para o frame F1 • tempo 2: Página P2 é trazida do disco para o frame F2 • tempo 3: um registro é modificado no frame F1 • Qual o frame mais recente ? • O frame F2, já que tempo1 < tempo2 BCC- 2013-1
Exercicio 1 – Aula 3: Considere a seguinte transação: Begin transaction • For i = 1,…, 100.000 • Leia registro r com r.ID = i • EndFor Commit transaction End transaction BCC- 2013-1
Para esta transação, a liberação de um frame ocorre em 2 situações: • Supondo um protocolo de lock que libera o frame quando a transação encerrou suas ações nos dados contido no frame: neste caso o frame é automaticamente liberado, assim que todos os registros contidos no frame tiverem sido lidos. • Quando a transação necessitar do frame para carregar outros dados que não cabem na memória. Mesmo que não tenha terminado de ler todos os registros contidos no frame, este será liberado. BCC- 2013-1
Exercicio 1(b) – AULA 2 Dados: Arquivo tem 100.000 registros, organizados sequencialmente por ordem dos identificadores dos registros. Cada página comporta no máximo 9091 registros Arquivo tem 11 páginas Logo: última página (P11) tem 9090 registros Pergunta: quantas vezes são carregadas cada página, supondo uma politica de substituição LRU ?
Exemplo : LRU Arquivo Sequencial em DISCO Buffer Pool: 10 frames P1 P2 P3 P4 P5 1 2 3 4 5 P6 P7 P8 P9 P10 6 7 8 9 10 Lista de Frames Livres = [ F1, ...., F10] P11 F2 F3 F4 .... F10 F1 F3 F4 .... F10 F1 F2 E assim por diante até a pag. 10 ... F1 F2 .... F10
Resposta do Ex. 1(b) : política LRU • Cada página é carregada uma única vez • Custo de I/O = 11= número de páginas do arquivo. BCC- 2013-1
Exercicio 1(b) – AULA 2 Dados: Arquivo tem 100.000 registros, organizados sequencialmente por ordem dos identificadores dos registros. Cada página comporta no máximo 9091 registros Arquivo tem 11 páginas Logo: última página (P11) tem 9090 registros Pergunta: quantas vezes são carregadas cada página, supondo uma politica de substituição MRU ?
Exemplo : MRU Arquivo Sequencial em DISCO Buffer Pool: 10 frames P1 P2 P3 P4 P5 1 2 3 4 5 P6 P7 P8 P9 P10 6 7 8 9 10 Lista de Frames Livres = [ F1, ...., F10] P11 F1 F2 F3 F4 .... F10 F1 F2 F3 F4 .... F10 E assim por diante até a pag. 10 ...
Resposta do Ex. 1(b) : política MRU • P1, P2,…, P10 são carregadas 9091 vezes cada uma (= número de registros destas páginas). • P11 é carregada 9090 vezes (= número de registros de P11). • Custo de I/O = 100.000 BCC- 2013-1