Log de Transação – Parte 2

Olá Gente!

Desculpem a demora para dar continuidade ao post sobre “Log de Transação”, mas essa semana foi corrida ainda mais com a finalização da segunda etapa do S2B – Fortaleza(trilha de banco de dados), mas sem delongas vamos começar a segunda parte do post.
Um Log de Transações é formado de um ou mais arquivos associados a um banco de dados que monitoram toda modificação feita nos dados ou objetos dentro do “database”. O Log não ultrapassa os limites dos banco de dados . Por tanto uma transação empresarial executada em vários bancos de dados é fisicamente implementada como uma transação separada dentro de cada banco de dados afetado.
O Log de Transações também é exigido para armazenar informações suficientes para permitir que o SQL Server recupere um banco de dados quando a instância for reiniciada.
No post anterior eu havia falado sobre LSN(Log Sequence Number), ele é a principal informação dentro do Log. Cada operação que afete o banco de dados incrementa o LSN. Cada unidade de armazenamento dentro do “database” monitora o LSN da última modificação feita na estrutura de armazenamento. Em nível de banco de dados, o LSN da última alteração feita no banco é armazenado no cabeçalho do master data file(arquivo de dados mestre). A nível de arquivo de dados(data files), o LSN da última alteração feita em uma página dentro do arquivo é armazenado no cabeçalho do arquivo de dados. Cada página de dados dentro de um banco de dados também grava o LSN da última alteração da página de dados.
Todas as alterações de dados ocorrem dentro do buffer na memória. Quando é feito uma alteração, o buffer correspondente é modificado e o registro é adicionado no log de transação. Uma página modificada no buffer pool é referenciada como uma dirty page(página suja). Cada dirty page monitora o LSN no Log de Transação correspondente à alteração que modificou a pagina no buffer pool. Quando o SQL Server executa um checkpoint, todas as páginas sujas do buffer pool são gravadas nos arquivos de dados.
Durante o processo de checkpoint, o SQL Server compara o LSN da página suja no buffer pool com o LSN da página de dados no disco. Se o LSN da página de dados no disco é igual ou menor do que o LSN da página suja no buffer pool, assim como igual ou menor do que o LSN do arquivo de dados, a página do disco é sobrescrita pela página do buffer pool. Se o LSN da dirty page é maior do que o da página de disco ou do arquivo de dados que contém a página, a página do buffer pool é sobrescrita pela página do disco.

Quando o processo de checkpoint termina de gravar a páginas sujas nos arquivos de dados , o maior LSN gravado em cada arquivo é gravado no cabeçalho do mesmo. Além disso o maior LSN gravado no processo de checkpoint inteiro é gravado no cabeçalho do arquivo de dados mestre(master data file).

O SQL Server garante que o LSN de cada página dentro de uma arquivo seja igual ou menor do que o LSN do arquivo. e que o LSN de cada arquivo dentro do banco de dados seja igual ou menor do que o LSN dentro do banco de dados. A última etapa do processo é apagar, em cada dirty page afetada pelo chekpoint, o flag que identifica que a página foi alterada.

Bom por hoje é só =). Até o próximo post e se puderem comentem !

Anúncios

2 thoughts on “Log de Transação – Parte 2

  1. show de bola.. gostei da explicação…
    vale ressaltar também que o SQL Server na hora que vai gravar as páginas sujas no log de transação não verifica se a transação já foi “commitada” ou não.. ele vai pegar TODAS as páginas sujas do buffer pool e gravar no arquivo de dados…
    outro motivo MUITO importante do porque a gente precisa ter o log de transaçoes.. na hora que o processo de recover da base acontecer, ele precisa do log para saber que aquele LSN salvo no arquivo de dados ainda NAO tinha finalizado e por isso precisa fazer o UNDO, ou seja, desfazer essa alteração para que você não tenha um valor inválido na tabela…

    o que eu vejo de gente que entende errado o log de transações e acha que pode deletar ele é incrível 🙂

    1. Obrigada Felipe!!Tomara que ajude o povo a entender um pouco mais sobre log de transações =). Você falou algo que vou colocar no post 3, que é sobre o UNDO e o REDO. Valeu por já ter tocado no assunto assim faço referência ao que falou =)!!

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s