Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Banco de Dados SQL do
Azure
Instância Gerenciada de SQL do Azure
Azure Synapse Analytics
Analytics Platform System (PDW)
Banco de Dados SQL no Microsoft Fabric
A E/S de uma instância do motor de base de dados inclui escritas lógicas e físicas. Ocorre uma escrita lógica quando os dados são modificados numa página do buffer cache. Uma escrita física ocorre quando a página é escrita do buffer cache para o disco.
Quando uma página é modificada no buffer cache, não é imediatamente escrita de volta ao disco; em vez disso, a página é marcada como suja. Isto significa que uma página pode ter mais do que uma escrita lógica feita antes de ser fisicamente escrita 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 que a página suja associada seja removida do cache do buffer e gravada no disco.
O SQL Server utiliza uma técnica conhecida como registo antecipado de escrita (WAL), que impede a escrita de uma página suja antes do registo associado ser gravado no disco. Isto é essencial para o correto funcionamento do gestor de recuperação. Para mais informações, consulte Registo de transações por escrita antecipada.
Como o SQL Server escreve uma página de dados modificada
A ilustração seguinte mostra o processo de escrita de uma página de dados modificada.
Quando o gestor de buffers escreve uma página, procura páginas sujas adjacentes que podem ser incluídas numa única operação de recolha-escrita. As páginas adjacentes têm IDs de página consecutivas e provêm do mesmo ficheiro; As páginas não têm de ser contíguas na memória. A busca continua tanto para a frente como para trás até que ocorra um dos seguintes eventos:
- Encontra-se uma página limpa.
- Foram encontradas 32 páginas.
- Encontra-se uma página suja cujo número de sequência de log (LSN) ainda não foi esvaziado no log.
- É encontrada uma página que não pode ser imediatamente trancada.
Desta forma, todo o conjunto de páginas pode ser escrito em disco com uma única operação de recolha-escrita.
Pouco antes de uma página ser escrita, a forma de proteção da página especificada na base de dados é adicionada à página.
Se for implementada proteção contra páginas rasgadas, a página deve ser bloqueada exclusivamente (EX) para E/S. Isto deve-se ao facto de a proteção contra páginas rasgadas modificar a página, tornando-a inadequada para qualquer outro thread ler.
Se for adicionada a proteção de páginas com checksum, ou se a base de dados não usar proteção de páginas, a página é bloqueada com um bloqueio de atualização (UP) para a entrada/saída. Este fecho impede que outra pessoa modifique a página durante a escrita, mas ainda permite que os leitores a utilizem.
Para mais informações sobre opções de proteção da página de I/O do disco, consulte Gestão de buffers.
Como as páginas sujas são escritas em disco
Uma página suja é escrita no disco de uma de três formas:
A escrita preguiçosa, a escrita fervorosa e os processos de checkpoint não esperam que a operação de I/O seja concluída. Eles usam sempre I/O assíncrona (ou sobreposta) e continuam com outros trabalhos, verificando o sucesso das I/O mais tarde. Isto permite ao SQL Server maximizar tanto os recursos de CPU como de I/O para as tarefas apropriadas.
Processo de escrita preguiçoso
O escritor preguiçoso é um processo do sistema que mantém buffers livres disponíveis removendo páginas pouco usadas da cache de buffer. As páginas sujas são primeiro escritas para o disco.
Processo de escrita entusiasta
O processo de escrita eager escreve páginas de dados sujas associadas a operações minimamente registadas, como inserir e selecionar em massa. Este processo permite que a criação e escrita de novas páginas decorram em paralelo. Ou seja, a operação de chamada não precisa de esperar até que toda a operação termine antes de escrever as páginas no disco.
Processo de ponto de controlo
O processo de ponto de verificação verifica periodicamente a memória intermédia em busca de blocos 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, criando um ponto no qual todas as páginas sujas têm a garantia de ter sido gravadas no disco.
O utilizador pode solicitar uma operação de checkpoint usando o CHECKPOINT comando, ou o Motor de Base de Dados pode gerar checkpoints automáticos com base na quantidade de espaço de registo utilizado e no tempo decorrido desde o último checkpoint. Além disso, é gerado um ponto de controlo quando certas atividades ocorrem. Por exemplo, quando um ficheiro de dados ou registo é adicionado ou removido de uma base de dados, ou quando a instância do SQL Server é interrompida.
Para mais informações, consulte Pontos de Controlo e a parte ativa do registo.