Os documentos do SQL Server falam sobre aplicar transações confirmadas a arquivos de dados durante a recuperação de falhas, como se estivesse fazendo um checkpoint imediato. Isso deve acontecer antes de desfazer transações não confirmadas, o que deve acontecer para concluir o processo de recuperação.
Por que ele libera transações confirmadas para arquivos de dados imediatamente, em vez de apenas carregar dados sujos no cache RAM (da mesma forma que os dados eram armazenados em cache + logs, antes da falha) e então deixá-los ser gravados como parte do próximo checkpoint? Parece que isso poderia prolongar desnecessariamente o tempo de recuperação de falhas.
Ele não grava diretamente nos arquivos de dados. O
REDO
processo carregará as páginas necessárias na memória de acordo com o resultado da passagem de análise e reproduzirá os registros de log contra essas páginas na memória, assim como o SQL Server faz para todas as outras modificações. Eventualmente, como parte do processo de recuperação, um ponto de verificação ocorrerá e isso gravará as páginas sujas no disco.Você pode verificar isso sozinho com procmon/etw se estiver interessado em entender melhor.