Gravando páginas

A E/S de uma instância do Mecanismo de Banco de Dados inclui gravações lógicas e físicas. Uma gravação lógica acontece quando os dados são modificados em uma página no cache do buffer. Uma gravação física acontece quando a página é gravada do cache do buffer no disco.

Quando uma página é modificada no cache do buffer, não é gravada imediatamente de volta no disco; ao contrário, a página é marcada como alterada. Isso significa que uma página pode ter mais de uma gravação lógica feita antes de ser gravada fisicamente no disco. Para cada gravação lógica, um registro de log de transações é inserido no cache de log que registra a modificação. Os registros de log devem ser gravados no disco antes de a página suja associada ser removida do cache do buffer e gravada no disco. O SQL Server usa uma técnica conhecida como log write-ahead que evita a gravação de uma página suja antes do registro de log associado ser gravado no disco. Isso é essencial ao funcionamento correto do gerenciador de recuperação. Para obter mais informações, consulte Log de transações write-ahead.

A ilustração a seguir mostra o processo de gravação de uma página de dados modificada.

Gravando uma página de dados modificados.

Quando o gerenciador de buffer grava uma página, procura páginas suja adjacentes que podem ser incluídas em uma única operação de coleta e gravação. As páginas adjacentes têm IDs de página consecutivas e são do mesmo arquivo; as páginas não precisam ser contíguas na memória. A pesquisa continua para frente e para trás até acontecer um dos seguintes eventos:

  • Uma página limpa é encontrada.

  • 32 páginas são encontradas.

  • Uma página suja é encontrada e cujo LSN (número de seqüência de log) ainda não foi liberado no log.

  • Uma página que não pode ser travada imediatamente é encontrada.

Dessa forma, o conjunto inteiro de páginas pode ser gravado no disco com uma única operação gather-write.

Um pouco antes de uma página ser gravada, o formulário de proteção de página especificado no banco de dados é adicionado à página. Se a proteção de página interrompida for adicionada, a página deverá ser travada como EX (exclusivamente) para a E/S. Isso porque a proteção de página interrompida modifica a página, tornando-a inadequada para ser lida por qualquer outro thread. Se a proteção da página de soma de verificação for adicionada, ou o banco de dados não usar nenhuma proteção de dados, a página será travada com uma trava UP (atualizada) para a E/S. Essa trava evita que alguém modifique a página durante a gravação, mas ainda permite que os leitores a utilizem. Para obter mais informações sobre opções de proteção de página de E/S de disco, consulte Gerenciamento de buffer.

Uma página suja é gravada no disco de três formas.

  • Gravação lenta

    O gravador lento é um processo de sistema que mantém buffers livres disponíveis ao remover páginas usadas raramente do cache do buffer. As páginas sujas são gravadas primeiramente no disco.

  • Gravação adiantada

    O processo de gravação ávida grava páginas de dados de alterações associadas com operações não registradas, como inserção em massa e seleção em. Esse processo permite a criação e a gravação em paralelo de páginas novas. Ou seja, a operação de chamada não precisa esperar até o término da operação inteira antes de gravar as páginas no disco.

  • Ponto de verificação

    O processo de ponto de verificação examina o cache do buffer periodicamente para buffers com páginas de um banco de dados especificado e grava todas as páginas sujas no disco. Os pontos de verificação economizam tempo durante uma recuperação posterior ao criar um ponto em que todas as páginas sujas foram gravadas no disco. O usuário pode solicitar uma operação de ponto de verificação usando o comando CHECKPOINT, ou o Mecanismo de Banco de Dados pode gerar pontos de verificação automáticos com base na quantidade de espaço de log usado e o tempo decorrido desde o último ponto de verificação. Além disso, um ponto de verificação é gerado quando ocorrem determinadas atividades. Por exemplo, quando um dado ou arquivo de log é adicionado ou removido de um banco de dados, ou quando a instância do SQL Server é interrompida. Para obter mais informações, consulte Pontos de verificação e a parte ativa do log.

    Os processos de gravação lenta, gravação adiantada e ponto de verificação não esperam a conclusão da operação de E/S. Eles sempre usam a E/S assíncrona (ou sobreposta) e continuam com outro trabalho, verificando o êxito da E/S posteriormente. Isso permite ao SQL Server maximizar os recursos da CPU e da E/S para as tarefas apropriadas.

Consulte também

Conceitos