Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Sistema de Plataforma de Análise (PDW)
Banco de dados SQL no Microsoft Fabric
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 de buffer, ela não é gravada imediatamente no disco; em vez disso, a página é marcada como suja. Isso significa que uma página pode ter mais de uma gravação lógica feita antes de ser gravada fisicamente em 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 WAL (log write-ahead) que evita a escrita de uma página suja antes do registro de log associado ser gravado em disco. Isso é essencial ao funcionamento correto do gerenciador de recuperação. Para saber mais, veja Log de transações write-ahead.
Como o SQL Server grava uma página de dados modificada
A ilustração a seguir mostra o processo de gravação de uma página de dados modificada.
Quando o gerenciador de buffer grava uma página, ele procura páginas sujas adjacentes que podem ser incluídas em uma única operação de coleta-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.
- Foram encontradas 32 páginas.
- Foi encontrada uma página suja cujo LSN (número de sequência de log) ainda não foi liberado no log.
- Foi encontrada uma página que não pode ser imediatamente travada.
Dessa forma, o conjunto inteiro de páginas pode ser gravado no disco com uma só operação coleta/gravação.
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 desfeita for adicionada, a página precisará ser travada com EX (exclusivamente) para a E/S. Isso porque a proteção de página desfeita modifica a página, tornando-a inadequada para ser lida por qualquer outro thread.
Se a proteção de página de soma de verificação for adicionada ou o banco de dados não usar nenhuma proteção de página, a página será travada com uma trava UP (atualização) 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 saber mais sobre opções de proteção de página de E/S de disco, veja Gerenciamento de buffer.
Como páginas sujas são gravadas em disco
Uma página suja é gravada no disco de três formas:
Os processos de gravação lenta, escrita 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 de CPU e de E/S para as tarefas apropriadas.
Processo de gravação lento
O gravador lento é um processo de sistema que mantém buffers livres disponíveis ao remover páginas não usadas com frequência do pool de buffers. As páginas sujas são gravadas primeiramente no disco.
Processo de gravação adiantado
O processo de gravação adiantado grava páginas de dados sujas associadas a operações minimamente registradas em log, como BULK INSERT e SELECT INTO. 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 aguardar até que toda a operação seja concluída antes de gravar as páginas no disco.
Processo de ponto de verificação
O processo de ponto de verificação verifica o pool de buffers periodicamente em busca de buffers com páginas de um banco de dados especificado e grava todas as páginas sujas em disco. Os pontos de verificação economizam tempo durante uma recuperação posterior, pois criam um ponto em que todas as páginas sujas são gravadas no disco.
O usuário pode solicitar uma operação de ponto de verificação usando o CHECKPOINT comando 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 no 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 arquivo de dados ou de log é adicionado ou removido de um banco de dados, ou quando a instância do SQL Server é interrompida.
Para saber mais, veja Pontos de verificação e a parte ativa do log.