Conceitos Transações e Log Transaction

 

Bom pessoal meu nome é Caio Augusto Papai, já escrevi alguns artigos e novamente venho falar que meu foco é para o pessoal que esta começando, até porque eu não sou o expert em SQL Server estudo bastante para chegar lá.

Começarei a falar um pouco sobre transação.

Exemplo:

 

Inicio da Transação

            1º Depositar um cheque na conta de uma loja, o valor a ser depositado é debitado da conta do cliente.

            2º É creditado um valor na conta da loja.

Final da Transação

              
 
 

 

Características da Transação (ACID)

 

  • Atomicidade - A transação deve representar uma unidade “atômica”, indivisivel.
 
  • Consistência – Ao ser finalizada una transação, todos os dados devem estar em um estado consistente em um banco de dados relacional (estado consistente em banco de dados relacional, significa que todas as regras e a integridade referencial tenha sido respeitada).

  • Isolamento – É a possibiliadade de acessar uma transação que esteja sendo usada, por exemplo, a transação 1 esta sendo modificada por um outro processo, enquanto a transação 2, foi criada e precisa acessar alguns dados e instruções da transação 1, com o isolamento é possiovel alterar a transação 2 pois ele conserva a transação 1 antes da alteração, assim permitindo qua a transação 2 tambem seja alterada não conflitando em nada.

 

  • Durabilidade – Uma vez encerra da a transação, as alterações por ela efetuadas serão definitivas.

 
 

Log de Transações (Transaction Log)

 

Quando é iniciada uma transação de  IDU (Insert, Delete ou Update), o servidor carrega a pagina de dados no disco e depois as envia para a memória cache de dados, o SQL Server verifica se a pagina já esta na memória cache da dados, se não estiver carregado, automaticamente ele às envia para a cache de dados.

As alterações sempre são feitas na memória de dados, nunca direto no disco. Depois são registradas apenas no transaction log apenas as que não foram executadas no arquivo de dados.

Após isso começa o processo de CheckPoint que é responsável pelos commits realizados com sucesso sejam aplicados no banco periodicamente, ou seja gravados no disco.

O checkpoint grava as informações no transaction log para saber quais arquivos foram e não foram gravados no banco de dados. Apos isso o checkpoint fica verificando periodicamente as transações que foram completadas com sucesso no transaction log, as quais ainda não foram gravadas no arquivo de dados do disco. Caso acontecer alguma falha no banco de dados ou ou em outro módulo que vá afetar o funcionamento do banco de dados, um processo de recuperação automatizado é disparado na proxima vez que o banco de dados for inicializado, assim fazendo com que as transações completadas e que ainda não foram aplicadas no banco de dados sejam aplicadas nesse momento, assim garantindo a “Durabilidade” na transação.

  

 

Ref: Biblia do Sql Server 2005.