O que LazyWriter e Checkpoint tem em comum?

Bom pessoal,

Falar de assuntos internos do SQL Server é sempre complicado, porem acho extremamente importante falar desses dois processos internos do SQL Server e no que eles são tao parecidos, porem é claro possuem suas particularidades. Para entendermos melhor o que cada um faz vamos colocar uma breve descriçao de cada processo.

Checkpoint

Checkpoint escreve as paginas de dados sujas (modificadas) que estavam em memoria para o disco. O principal proposito deste processo é reduzir o tempo de recuperacao da base de dados, entao quando voce ve no errorlog: “20 transactions rolled forward in database ‘master'” é o Checkpoint realizando seu trabalho de sincronizar os arquivos LDF e MDF, que chamamos de fase UNDO e REDO.

LazyWriter

Periodicamente examina o data cache e escreve as paginas sujas (modificadas) no disco. Uma vez escrita a pagina então volta para a lista de paginas disponíveis, que manterão um certo nível de buffers livres para outras threads. O processo do LazyWriter seleciona as paginas de dados a partir de um algoritmo que marca as paginas que nao foram modificadas e/ou referenciadas por um periodo de tempo. 

Mas o que os dois possuem em comum?

Vimos que o papel dos dois processos é liberar espaço no data cache para a entrada de novos dados, retirando aqueles que foram modificados, ou que por um período de tempo não foram referenciados. Mas a grande jogada desses dois processos é que o LazyWriter que fica na camada do SQLOS atua somente quando existe uma pressão de memoria na instancia do SQL Server, fora esse caso em especifico o Checkpoint é o responsavel por realizar o gerenciamento das paginas de dados no Data Cache.

Pessoal, como viram esse post foi não teve nenhuma parte  pratica.. mas espero que tenha passado de uma maneira simples como funcionam esses dois processos do SQL Server.

Att,
Marcos Freccia
[MCTS|MCITP|MCT SQL Server 2008]

Sobre Marcos Freccia

MVP em SQL Server (Data Plataform) , especialista em SQL Server, e atualmente trabalhando com Microsoft Azure!

Publicado em janeiro 10, 2012, em Comunidade, MCM, VirtualPass e marcado como , , . Adicione o link aos favoritos. 3 Comentários.

  1. Marcos,

    Posso dar mais um pitaco?! =D

    Há um tempo atrás tive dúvidas de como o Lazywriter funcionava, principalmente como ele escolhia as páginas a serem retiradas do BPool.

    Veja este post no Technet, onde tirei minhas dúvidas com o Gustavo Maia Aguiar: http://social.technet.microsoft.com/Forums/pt-PT/admingeralpt/thread/0b23e8bd-495d-47f7-b64c-8480c8e77215

    Ele explicou em detalhes o funcionamento do Lazywriter, utilizando o algoritmo LRU (Least Recent Used) onde páginas mais antigas e menos utilizadas são alvo dele. Fica a referência, inclusive, de vários trechos do livro “SQL Server 2008 Internals”, leitura obrigatória.

    Mais um ótimo post! Muito bom.

    Abraços

    • Com certeza Fabricio, referencias sao sempre bem vindas, no post eu citei que ele utilizava algorítimos para verificar qual pagina ele ira retirar do data cache, mas nao falei qual era esse algoritmo. Acho que vale até iniciar as pesquisas sobre esse algorítimo se encontrar e falar sobre.

      Obrigado pelo feedback.

      Abraços,
      Marcos Freccia

  2. Freccia,

    so mais uma coisa. Dependendo de como estiver o LW, o mesmo pode evitar uma situação bem comum que é o Spinlock. Mas isso é papo para outro post!

    Abraço!

    FC

Deixe uma resposta

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

%d blogueiros gostam disto: