Baixe o app para aproveitar ainda mais
Prévia do material em texto
BANCO DE DADOS II Gerenciamento de Buffer Versão dos Slides: 0.761 Prof. Dr.-Ing. Leonardo Andrade Ribeiro DCC-UFLA, Lavras Prof. Dr.-Ing. Leonardo Andrade Ribeiro Agenda Introdução Operações do Gerenciador de Buffer String de Referência Localidade de Referência Algoritmo para Estratégia de Alocação Algoritmos para Substituição de Páginas 2 3 armazenamento externo serviços de arquivos controle de propagação estruturas de armazenamento caminhos de acessos lógicos estruturas de dados lógicas C5 C4 C3 C2 C1 Camada 2: Controle de Propagação 4 Arquitetura de 5 Níveis (Härder e Reuter) armazenamento externo serviços de arquivos controle de propagação estruturas de armazenamento caminhos de acessos lógicos estruturas de dados lógicas interface do buffer do BD fix/unfix de páginas unidades de endereçamento: páginas, segmentos estruturas auxiliares: tabelas de páginas, tabelas de blocos unidades de endereçamento: blocos, arquivos C5 C4 C3 C2 C1 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Controle de Propagação: Visão Geral 5 TA1 TA2 TAn TA3 ... Gerenciador de Transações e Operadores Físicos Referências Lógicas de Páginas Gerenciador de Buffer Gerenciador de Armazenamento Referências Físicas de Páginas SGBD (Simplificado) SELECT Nome FROM Empregado WHERE ID = 1111 FIX Pi UNFIX Pi READ Bi WRITE Pi Canais de Acesso Prof. Dr.-Ing. Leonardo Andrade Ribeiro Blocos vs. Páginas Camada C1: BD logicamente dividido em blocos de mesmo tamanho • Bloco: objeto de dados administrado em C1 cujo conteúdo está armazenado no disco Camada C2: BD logicamente dividido em páginas de mesmo tamanho • Página: objeto de dados administrado em C2 cujo contéudo pode ou não estar em memória 6 Blocos vs. Páginas Aqui, iremos assumir uma relação 1-1 (mapeamento) entre blocos e páginas • Tamanho de blocos = Tamanho de páginas • Identificador de Blocos = Identificador de páginas Para cada página 𝑃𝑖, teremos um bloco 𝐵𝑖 correspondente • O subscrito 𝑖 é o identificador da página ou bloco O conteúdo de uma página já existente é sempre obtido inicialmente do bloco correspondente no disco Entretanto, o conteúdo de uma página em memória pode divergir do contéudo do bloco correspodente no disco caso a mesma tenha sido modifica em memória e ainda não tenha sido propagada no disco 7 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Blocos vs. Páginas Finalmente, notem que essa relação 1-1 entre blocos e páginas, apesar de amplamente usada na prática, não é uma restrição conceitual Por exemplo, estratégias em que uma página pode ser armazenada em blocos diferentes ao longo do “tempo de vida” do BD já foram propostas 8 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Propagação Propagação: termo geral para denotar a transferência de dados entre o disco e a memória • Ação controlada por C2 usando serviços de C1 Página suja: página cujo contéudo foi modificado em memória mas ainda não foi escrito no bloco correspondente no disco Atualizações: • Novas páginas criadas devido à inserção ou remanejamento de dados do BD resulta na criação de novos blocos • Similarmente, deleção de páginas resulta na deleção de blocos no disco 9 Propagação: Exemplos 1) Bloco 𝐵1 é propagado para a página 𝑃1 2) Página suja 𝑃2′ é propagada para o bloco 𝐵2 3) Nova página 𝑃3 é propagada para o novo bloco 𝐵3 4) Página deletada 𝑃4 causa a deleção do bloco 𝐵4 10 C1 C2 𝐵1 𝐵1 Disco 𝐵2 𝑃2′ 𝑃1 𝐵2 𝐵3 𝐵3 𝐵4 𝑃4 𝑃3 𝐵4 1) 2) 3) 4) X X Intermediação da propagação em C1 Buffer do SGBD Um buffer de um SGBD é dividido em quadros de páginas (page frame) de mesmo tamanho em um espaço de endereçamento de memória linear Tipicamente, um quadro de página armazena o conteúdo de uma única página Notem que uma página pode ser armazenada em diferentes quadros de páginas cada vez que seu contéudo é lido de um bloco Quando não for relevante para a discussão, não faremos distinção entre página (objeto) e quadro de página (local de armazenamento no buffer) • Por exemplo, podemos usar endereço de memória da página 𝑃 no lugar endereço de memória do quadro de página que armazena a página 𝑃 11 Buffer do SGBD Dados do BD requisitados por camadas superiores são sempre armazenados primeiramente no buffer • Cache de dados: Requisições subsequentes podem ser atendidas sem a necessidade de novo acesso ao disco • Exceção: Objetos volumosos como vídeos e fotos não são normalmente armazenados no buffer SGBDs podem manter mais de um buffer para armazenar diferentes tipos de dados • Por exemplo, um buffer para tabelas regulares, outro para tabelas temporárias, e um terceiro para índices Manuais frequentemente usam o termo buffer pool para se referir à memória usada para armazenar dados do BD • Aqui, usaremos apenas buffer 12 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Gerenciador de Buffer O buffer é controlado por um mecanismo de gerenciamento de buffer, ou, simplesmente, gerenciador de buffer O principal objetivo do gerenciador de buffer é minimizar a quantidade de IO para um dado tamanho de buffer • Proporção de 1:1000 entre buffer e o BD é comum • Mesmo com esta proporção, um gerenciador de buffer bem ajustado pode evitar 95% (até mais) dos acessos ao disco 13 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Referências de Página Referências de páginas podem ser lógicas ou físicas Referências lógicas: realizada por operações em C3 invocando serviços em C2 Referências físicas: realizada por operações em C2 invocando serviços em C1 • Ocorre quando a página requisitada na referência lógica não se encontra em memória e seu conteúdo precisa ser buscado no bloco correspodente • Resulta em acesso ao disco a não ser que os serviços do sistema de arquivos do SO estejam sendo usados por C1 e os dados do bloco correspondente se encontrem no cache • O último caso resulta em uma situação de double buffering, onde dados estão duplicados no buffer do SGBD e no cache do sistema de arquivos, como discutido anteriormente 14 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Por Que Não Usar o Mecanismo de Cache do SO? Performance: • SO gerencia cache de arquivos no espaço do kernel: necessidade de chamadas ao sistema • Gerenciamento de buffer no espaço de usuário pode ser realizado com um número bem menor de instruções Diferentes padrões de acesso: • O algoritmo de substituição de página LRU (Least Recently Used), que é popularmente usado em SOs pode não é o mais adequado para certos tipos de acesso. Por exemplo: scan de tabelas 15 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Por Que Não Usar o Mecanismo de Cache do SO? Prefetching: Sequência lógica de blocos, que é invisível para o SO, normalmente não corresponde à sequência física Escritas Forçadas de Páginas no Disco: o SGBD precisa ter o controle sobre o momento em que certas páginas são escritas no disco. Por exemplo, para gerenciar mecanismos de logging (a ser visto mais adiante no curso) 16 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Agenda Introdução Operações do Gerenciador de Buffer String de Referência Localidade de Referência Algoritmo para Estratégia de Alocação Algoritmos para Substituição de Páginas17 Serviços do Gerenciador de Buffer O principal serviço do gerenciador é retornar endereços de páginas solicitadas por operações em C3* (referências lógicas) Solicitantes em C3 enviam requições usando identificadores de páginas • O particionamento do BD em páginas e a respectiva identificação é vísivel em C3 por razões de performance O gerenciador retorna o endereço de mémoria da página Este serviço é acionado pela interface FIX/UNFIX exportada por C2 18 * No restante da discussão, focaremos em requisiçoes para acesso de leitura ou escrita de páginas. Requisições para criação ou remoção de páginas são tratadas de maneira similar. Prof. Dr.-Ing. Leonardo Andrade Ribeiro Interface FIX/UNFIX Método FIX: possui uma página 𝑃𝑖 como parâmetro, opcionalmente com um flag sinalizando intenção de atualização na página • 𝑃𝑖 é localizada, armazenada em um quadro de página, e “fixada“ no buffer para evitar que a mesma seja removida do buffer enquanto estiver sendo usada • O endereço de memória de 𝑃𝑖 é passado para o invocador (em C3) do método FIX • O invocador pode usar e modificar os elementos de dados contidos em 𝑃𝑖 Método UNFIX: Após o término das operações em 𝑃𝑖 , o método UNFIX é invocado para deixar 𝑃𝑖 disponível para seleção pelo algoritimo de substituição de páginas (mais adiante) 19 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Interface FIX/UNFIX:Exemplo 20 C3 C2 FIX(𝑃33, escrita) Retorno FIX Endereço de 𝑃33 0xF13A42BC Interface de C2 Operação em C3 UNFIX(𝑃33) Gerenciador de Buffer Operações do Gerenciador de Buffer O gerenciador de buffer realiza três operações básicas para atender as invocações dos métodos FIX e UNFIX 21 Busca de Páginas no Buffer Estratégia de Alocação Substituição de Páginas G er en ci ad o r d e B u ff er Prof. Dr.-Ing. Leonardo Andrade Ribeiro Busca de Páginas no Buffer 22 Verifica se um página requisitada se encontra no buffer Diversas estratégias possíveis: • Busca sequencial • Uso de estruturas auxiliares (uma entrada para cada quadro de página): tabelas, tabelas ordenadas, árvores Winner: Tabela hash com overflow chain • Mapeia identificadores de página para o endereço de memória correspodente • Páginas sem entrada na tabela hash não estão em mémoria • Número de entrada acessadas para cada referência lógica varia no intervalo 1,1.2 • Esta tabela recebe o nome de tabela de tradução Prof. Dr.-Ing. Leonardo Andrade Ribeiro Estratégia de Alocação Estratégia de alocação é usada para distribuir quadros de páginas entre transações concorrentes Alocação dinâmica: • Quantidade de quadros de páginas associados a uma transação pode aumentar ou diminuir durante a execução da mesma A estratégia de alocação também determina as páginas a serem consideradas pelo algoritmo de substituição de páginas, como veremos a seguir 23 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Substituição de Páginas Se o buffer está cheio e uma página que não se encontra em memória é referenciada, então é necessário escolher uma “vítima” para ser substituída no buffer pela nova página referenciada A estratégia de alocação de páginas determina o conjunto de páginas elegíveis para substituição Um algoritmo de substituição de páginas é então usado para determinar qual página do conjunto de páginas elegíveis será escolhida para ceder lugar no buffer para a nova página • Caso a página escolhida tenha sido modificada (página suja), então a mesma tem que ser escrita no disco antes que seu conteúdo seja substituído no buffer 24 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Estratégia de Alocação e Substituição de Páginas Os algoritmos para implementar a estratégia de alocação e o mecanismo de substituição de páginas são bastante relacionados • Um mesmo arcabouço algorítmico pode ser usado para as duas operações • Entretanto, o problema de alocação de quadros e o de substituição de páginas são logicamente diferentes Algoritmos para estas duas operações serão apresentados mais adiante 25 Prof. Dr.-Ing. Leonardo Andrade Ribeiro A seguir são apresentados os passos de processamento do gerenciador de buffer após a realização de uma referência lógica à página através da invocação do método FIX em C2 1. O gerenciador de buffer realiza uma busca pela página no buffer 2. Caso a página já estiver no buffer, a mesma é “fixada” (isto é, a mesma não será considerada pelo algoritmo de substituição de páginas) e seu endereço é retornado para o invocador em C3 Putting It All Together 26 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Putting It All Together (2) 3. Se a página não estiver no buffer, mas existir quadros de páginas livres, então é realizada uma referencia física, isto é, uma invocação do serviço de C1 (ex.: 𝑅𝐸𝐴𝐷(𝐵)), para acessar o conteúdo do bloco correspondente 4. Se a página não estiver no buffer e não existir quadros de páginas livres, então o algoritmo de substituição de páginas é executado para escolher uma “vítima” do conjunto de páginas elegíveis para substituição 27 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Putting It All Together (3) 3. Caso a vítima for uma página suja, então é realizada uma referencia física, isto é, uma invocação do serviço de C1 (ex.: 𝑊𝑅𝐼𝑇𝐸(𝑃)), para escrever o conteúdo da página no bloco correspondente 5. Uma referência física é realizada para acessar o bloco correspondente à página solicitada e seu conteúdo é armazenado no quadro de página ocupado anteriormente pela vítima 7. Assim como no passo 2, a página referenciada é “fixada” antes de seu endereço ser retornado para o invocador em C3 28 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Putting It All Together 1) Referência lógica para página X 2) Página suja Y é escolhida como vítima e uma referência físíca é realizada para escrevê-la no disco 3) Outra referência física é realizada para ler o conteúdo do bloco X e armazená-lo no quadro de página ocupado anteriormente por X 4) O endereço do quadro de página Y é retornado para C3 29 Buffer Disco Y X Y referência física referência lógica FIX (X) 2 3 1 4 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Agenda Introdução Operações do Gerenciador de Buffer String de Referência Localidade de Referência Algoritmo para Estratégia de Alocação Algoritmos para Substituição de Páginas 30 Prof. Dr.-Ing. Leonardo Andrade Ribeiro String de Referências Lógicas de Página A sequência de referências lógicas em ordem temporal é chamada de string de referências lógicas de página (ou, abreviadamente, string de referência, quando o contexto for claro) • Exemplo: 𝑃1, 𝑃4, 𝑃13, 𝑃1, 𝑃13, 𝑃13, 𝑃13, 𝑃1, 𝑃4 • Descrevem o padrão de referências lógicas do SGBD Fatores que influenciam este padrão: • O tipo das transações consituindo a “carga” do SGBD (atualização, leitura, acesso sequencial, etc) • O mix de transações em paralelo • Estruturas de acesso (índices) e o modelo de dados 31 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Referências Lógicas Referêcias lógicas emitidas por uma única transação independem do tamanho do buffer Referêcias lógicas emitidas pelo conjunto global de transações dependem indiretamente do tamanho do buffer • Sequência global de transações é afetada pelo escalonamento de processamento de transações • Escalonamento de transações é determinado, em grande parte,por transações gerando referências físicas • Referências físicas é uma função do tamanho do buffer 32 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Padrão de Referências Lógicas Localidade no padrão de referência não é causado necessariamente por apenas uma transação, mas pode emergir da sequência de referências global do conjunto de relações • O uso concorrente de uma página por transações é frequente Padrão de referência em BDs pode ser previsível devido a existência de caminhos de acesso (índices). Ex.: A raiz de árvores possui alta probabilidade de acesso 33 Prof. Dr.-Ing. Leonardo Andrade Ribeiro String de Referências Físicas Toda referência física é precedida por uma referência lógica • Entretanto, nem toda referência lógica resulta em uma referência física Diretamente influenciada pelo tamanho do buffer e pelo algoritmo de substituição de páginas A mesma string de referências lógicas pode gerar strings de referências físicas bastante diferentes para diferentes algoritmos de substituição de páginas 34 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Agenda Introdução Operações do Gerenciador de Buffer String de Referência Localidade de Referência Algoritmo para Estratégia de Alocação Algoritmos para Substituição de Páginas 35 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Localidade de Referência A propriedade mais importante da string de referência lógica a ser explorada algoritmos de alocação de buffer e substituição de páginas Dado uma string de referência lógica, como caracterizar e medir a localidade? 36 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Distribuição da Profundidade da Pilha LRU Pilha LRU: páginas referenciadas são colocadas em uma pilha; página usada mais recentemente sempre encontra-se no topo Se uma página referenciada encontra-se também em posições mais baixas da pilha, ela é deletada Realizando uma contagem do quantidade de vezes que páginas encontram-se em determinada profundidade da pilha é possível estabelecer uma distribuição da profundidade da pilha LRU 37 38 Distribuição da Profundidade da Pilha LRU A B C D E 1 2 3 4 5 String de referência: ABACAAADDE A B C D E B A C D E A B C D E C A B D E A C B D E A C B D E A C B D E D A C B E D A C B E E D A C B Pilhas LRU 1 2 3 4 5 Distribuição de profundidade da pilha LRU profundidade da pilha Prof. Dr.-Ing. Leonardo Andrade Ribeiro Distribuição de Profundidade: Aplicação sobre SO 39 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Distribuição de Profundidade: SGBD 40 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Por que a Distribuição do SGBD é Diferente? A página “mais jovem“ já encontra-se fixa no buffer; acesso subsequentes a essa página não geram outras referências Referências em posições 6-40 são causadas por transações bloqueadas por um certo período de tempo porque outras transações concorrentes estão mantendo acesso exclusivo a recursos requisitados por estas transações Distribuição não é monotonicamente decrescente 41 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Agenda Introdução Operações do Gerenciador de Buffer String de Referência Localidade de Referência Algoritmo para Estratégia de Alocação Algoritmos para Substituição de Páginas 42 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Algoritmo para Estratégia de Alocação O algoritmo a ser apresentado aloca quadros de página para cada transação baseando-se na respectiva string de referência lógica • A string de referência lógica para cada transação é analisada em separado Propriedade de localidade é medida usando o conceito de working-set 43 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Modelo Working-Set O working-set de uma transação, denotado por 𝑊 𝑡, 𝜏 , é definido como o conjunto de páginas distintas entre as 𝜏 últimas páginas referenciadas até o tempo 𝑡 𝜏 é chamado de tamanho da janela 𝑤 𝑡, 𝜏 = 𝑊 𝑡, 𝜏 = tamanho do working set no tempo 𝑡 • Isto é, quantidade de páginas distintas referenciadas para uma janela 𝜏 no tempo 𝑡 A média do tamanho do working-set durante diferentes valores de 𝑡, denotado por 𝑤 𝜏 , pode ser usado como uma medida da localidade 44 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Modelo Working-Set: Exemplo 45 A B A C A B A B C D E F G H 𝑡1 𝑡2 𝜏 = 8 𝜏 = 8 𝑤 𝑡1 , 𝜏 = 8 = 3 𝑤 𝑡2 , 𝜏 = 8 = 8 𝑤 𝜏 = 8 = 8 + 3 2 = 5.5 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Estratégia de Alocação Dinâmica usando Working-Sets Quatro princípios básicos: 1. Em fases de alta localidade de uma transação, a quantidade de quadros de páginas alocados para esta transação diminui (working-set pequeno) 2. Em fases de baixa localidade de uma transação, a quantidade de quadros de páginas alocados para esta transação aumenta (working-set grande) 3. Páginas que pertençam ao working-set de uma ou mais transações são mantidas no buffer 4. Páginas que não pertençam ao working-set de qualquer transação são elegíveis para substuição Generalização: uso de janelas 𝜏 de tamanhos diferentes para diferentes tipos de transações: sistema de prioridade 46 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Agenda Introdução Operações do Gerenciador de Buffer String de Referência Localidade de Referência Algoritmo para Estratégia de Alocação Algoritmos para Substituição de Páginas 47 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Algoritmos de Substituição de Páginas Recebem com entrada o conjunto de páginas elegíveis para substituição determinado pela estratégia de alocação Objetivo básico: escolher como “vítima” a página com menor probabilidade de referência futura 48 Prof. Dr.-Ing. Leonardo Andrade Ribeiro LRU (Least Recently Used) Substitui a página que foi referenciada pela última vez há mais tempo Intuição: páginas que não tem sido usadas por um bom tempo possuem menos probabilidade de serem acessadas novamente O gerenciador de buffer precisa manter uma tabela indicando a última vez que cada página foi acessada 49 Prof. Dr.-Ing. Leonardo Andrade Ribeiro FIFO (First-In-First-Out) Seleciona a página que foi carregada do disco para a memória há mais tempo O gerenciador precisa apenas saber o momento que o bloco do disco foi escrito no buffer Como a estratégia FIFO desconsidera referências, páginas altamente referenciadas e que estejam no buffer há mais tempo podem ser selecionadas como vítima. Ex.: o nó raiz de uma árvore B FIFO é apropriado para padrões de acesso sequencial. Ex.: scan de uma tabela 50 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Algoritmo Clock (Segunda Chance) Implementado seguindo metáfora dos movimentos de um relógio: páginas são organizadas logicamente como um círculo Cada página possui um bit associado Quando uma página é carregada no buffer ou referenciada, o valor bit é feito igual a 1 Quando o gerenciador de buffer precisa selecionar uma página como vítima, ele percorre o conjunto de páginas em sentido horário • Se o bit de uma página encontrada for 1, então ele é modificado para 0 • Seo bit de uma página for 0, então esta página é selecionada como vítima Uma página só é selecionada como vítimase a mesma não tiver nenhum acesso após segunda passagem do “ponteiro do relógio” 51 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Algoritmo Clock (Segunda Chance) 52 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 Tempo 1 Tempo 2 vítima Tempo 3 páginas referenciadas vítima Tempo 4 página lida do disco Prof. Dr.-Ing. Leonardo Andrade Ribeiro Algoritmo Clock: Generalização No lugar de bits, contadores podem usados • Diferentes valores podem definir um sistema de prioridades • Ex.: O nó raiz de uma árvore B recebe um valor mais alto Implementação do mecanismo FIX/UNFIX • FIX: muda o valor do contador para infinito • UNFIX: muda o valor do contador para 0 53 Prof. Dr.-Ing. Leonardo Andrade Ribeiro Referências Adicionais Stonebraker, M: Operating System Support for Database Management. Commun. ACM 24(7): 412-418 (1981) Effelsberg, W., Härder, T.: Principles of Database Buffer Management. ACM Transactions on Database Systems, 9(4), pp. 560-595 (1984) 54
Compartilhar