140 likes | 306 Views
DB Buffer Management. LEIC-Tagus – TDB 05/06. Bruno Azenha nº 51377. Tópicos. Gestão de buffers Desempenho Gestão de Buffers em DB Políticas de substituição Política LRU Prefetch Acessos a páginas Buffers DBMS vs. Buffers SOs. Query Optimization and Execution. Relational Operators.
E N D
DB Buffer Management LEIC-Tagus – TDB 05/06 Bruno Azenha nº 51377
Tópicos • Gestão de buffers • Desempenho • Gestão de Buffers em DB • Políticas de substituição • Política LRU • Prefetch • Acessos a páginas • Buffers DBMS vs. Buffers SOs
Query Optimization and Execution Relational Operators Files and Access Methods Buffer Management Disk Space Management DB Âmbito
Gestão de Buffers • A informação é guardada em disco e chamada para a memória central quando é necessária • Características nos sistemas UNIX: • Todas as operações I/O passam pelo buffer pool • Política LRU (ou aproximação) para substituições de paginas • Prefetch nos acessos sequenciais • Transparência para os clientes
Desempenho • Overhead pode causar grande degradação do desempenho • Overhead: para cada leitura página • Chamada ao sistema • Transferência de informação in/out ao núcleo • 5000 instruções em UNIX para transferir 512bytes de disco • Os DBMSs implementam um buffer pool próprio para reduzir o overhead
DB Gestão de Buffers em DB Page Requests from Higher Levels BUFFER POOL disk page free frame MAIN MEMORY DISK choice of frame dictated by replacement policy • DBMS precisa dos dados na RAM • O Buffer Mgr esconde o facto de nem todos os dados estarem na RAM!
Políticas de substituição • A frame a ser seleccionada depende da política de substituição: • LRU, MRU, Clock, etc. • A política de substituição pode ter grande impacto no número de I/Os, dependendo do padrão de acessos • Padrões típicos de acesso: • Scans sequenciais a blocos que não voltarão a ser referenciados • Scans sequenciais cíclicos • Acessos aleatórios a blocos que não voltarão a ser referenciados • Acessos aleatórios
Política LRU • Least Recently Used (LRU) • Para cada página no buffer pool, manter um timestamp de quando passou a “unpinned” • Susbtituir a frame com o valor mais antigo • Política comum e de fácil compreensão. Funciona bem para acessos repetidos a páginas populares • Problemas • LRU + scans sequenciais repetidos • # buffer frames < # paginas em ficheiro implica que cada pedido desencadeia um I/O
Prefetch • DBMS consegue saber os dados a que vai aceder no futuro • Nem sempre são sequenciais • A estratégia é ir buscar páginas antes de serem necessárias • Mas uma má política de substituição pode levar à substituição de páginas que ainda sejam precisas
Acesso a páginas (1) • Tabela do buffer pool contém: <frame#, pageid, pin_count, dirty> • Se a página desejada não estiver na pool: • Escolher uma frame para ser substituída (somente páginas “un-pinned”) • Se a frame estiver “dirty” guardá-la em disco • Ler a página para a frame seleccionada • Incrementar “pin” da página e devolver o seu endereço NOTA: É possível que ocorra “pre-fetch” de várias páginas quando o Buff Manager consegue prever o padrão de acessos (por ex acessos sequenciais)
Acesso a páginas (2) • Pedidos às páginas têm de terminar com “unpin” e a indicação se esta foi alterada (através da flag “dirty”) • Uma página na pool pode ser pedida várias vezes: • Controlo do número de acessos através do “pin count” • Uma página é candidata a substituição quando pin_count == 0 • Gestor de recuperção pode fazer com que existam I/Os adicionais ao substituir uma frame
Buffers DBMS vs. Buffers SOs Os SOs fazem gestão de disco e memória. Porque não recorrer a estes? • Os DBMS requerem buffer managers que permitam: • Efectuar pin de uma página no buffer • Forçar a escrita para disco • Efectuar escritas ordenadas (recuperação!) • Escolher a política de substituição • Efectuar pre-fetch de acordo com os padrões de acesso típicos nas DB
Conclusões • O buffer manager é o responsável por gerir as trocas de informação disco-memória • DBMS necessitam de funcionalidades não disponibilizadas pelos buffers managers dos SOs • Boa política de substituição é essencial para assegurar um bom desempenho
Bibliografia • “Operating System Support for Database Management”, Stonebraker, 1981 • “An evolution of buffer management strategies for Relational DB Systems”, Chou and DeWitt, 1985 • Database Management Systems, Raghu Ramakrishnan • OS Supportf for DBMS, Ailamaki, http://www.cs.cmu.edu/afs/cs/academic/class/15721-f01/www/lectures/OSSupport.pdf