Correspondência e mistura
Fazer backup do log de transações não é o mesmo que truncar o arquivo de log de transações, e truncar o arquivo de log de transações não é o mesmo que reduzir o arquivo de log de transações. Ah, sim, e o backup do arquivo de log de transações não precisa acionar um truncamento. Dependendo da carga atual, o mecanismo do banco de dados pode decidir definir um ponto de verificação, mas aguardar um pouco com o truncamento.
Explicando
O arquivo de log de transações é o local em que o mecanismo do banco de dados armazena modificações feitas nos dados em um banco de dados, independentemente de o banco de dados estar no modelo de recuperação SIMPLE ou no modelo de recuperação COMPLETO. (Importante)
Agora, o arquivo de log de transações do banco de dados não é apenas um contêiner de armazenamento contínuo, mas uma coleção de VLFs (Arquivos de Log Virtuais) criados em uma ordem sequencial dentro do arquivo TLog (Transaction Log). O tamanho dos VLFs varia dependendo da versão do SQL Server em uso no momento e também do tamanho inicial selecionado durante a criação do arquivo TLog e também do tamanho selecionado (se houver) para a configuração de crescimento automático do Arquivo TLog.
Referências:
- Alteração importante no algoritmo de criação de VLF no SQL Server 2014 (SQLSkills.com)
- Números de sequência iniciais de VLF e tamanho padrão do arquivo de log (SQLSkills.com)
- Dentro do mecanismo de armazenamento: mais informações sobre a natureza circular do log
(SQLSkills. com)
... e talvez na ordem inversa
Quando os dados são modificados no banco de dados, o Mecanismo de Banco de Dados gravará essas alterações no TLog do banco de dados correspondente para manter a consistência transacional. Isso também é conhecido como ACID - Atomicidade, Consistência, Isolamento, Durabilidade . As transcensões reais dessas alterações são armazenadas nos VLFs do TLog (arquivo). Quando um VLF estiver cheio, as transações mais recentes serão armazenadas no próximo VLF disponível em ordem sequencial.
Exceções
No entanto, se o final do arquivo TLog for alcançado, as modificações serão armazenadas no primeiro VLF no início do arquivo TLog. (explicado em Por dentro do mecanismo de armazenamento: mais informações sobre a natureza circular do log )
Quando não houver VLFs disponíveis livres para armazenar novas transações e se a configuração de crescimento automático estiver configurada, o Mecanismo de Banco de Dados aumentará o arquivo TLog pela quantidade definida e criará VLFs adicionais, dependendo do tamanho definido nas configurações de crescimento automático e na fórmula explicado em Alteração importante no algoritmo de criação de VLF no SQL Server 2014 . Transações adicionais podem ser armazenadas no próximo VLF dentro do arquivo TLog.
Fazendo backup do arquivo TLog
Quando você aciona um backup do arquivo TLog, tudo o que você está fazendo é dizer ao mecanismo de banco de dados para
- dê uma olhada no arquivo TLog
- determinar quando ocorreu o último backup do log de transações (LSN: Log Sequence Number; para pesquisas adicionais)
- definir um ponto de verificação no arquivo TLog ( pontos de verificação do banco de dados (SQL Server) )
- armazene uma cópia de backup do arquivo TLog no disco / fita, mantendo o controle do LSN anterior e do último LSN confirmado imediatamente antes da conclusão do backup
- transferir todas as modificações para o "banco de dados"
- marcar os VLFs como reutilizáveis
Até agora, nenhum espaço foi liberado dentro do arquivo TLog para o mecanismo de banco de dados reutilizar ...
Truncamento automático do arquivo TLog
... mas se o Mecanismo de Banco de Dados tiver alguns ciclos de sobra e não estiver sob muita pressão, ocasionalmente consultará o arquivo TLog, observe o Ponto de Verificação e libere os VLFs para reutilização. O espaço dentro do arquivo TLog ainda é usado pelos VLFs (mesmo tamanho, mesmo local), mas eles podem ser reutilizados gratuitamente.
Isso está documentado no truncamento do log de transações :
Exceto quando atrasado por algum motivo, o truncamento do log ocorre automaticamente da seguinte maneira: - No modelo de recuperação simples, após um ponto de verificação.
- No modelo de recuperação completa ou no modelo de recuperação com registro em massa, após um backup de log, se um ponto de verificação ocorreu desde o backup anterior. Para obter mais informações, consulte "Truncamento de log nos modelos de recuperação completo e com registro em massa", posteriormente neste tópico.
Existem alguns casos em que isso não acontece:
Embora automático, o truncamento de log pode ser atrasado por vários fatores. Para obter informações sobre o que pode atrasar o truncamento de log, consulte Fatores que podem atrasar o truncamento de log .
Visualizando o truncamento de log
O truncamento de log pode ser observado quando você consulta o tamanho do TLog usando instruções SQL ou o relatório Espaço do Banco de Dados na UI do SSMS. Você pode observar que o espaço usado dentro do arquivo TLog pode ser apenas 1% do tamanho do arquivo TLog disponível.
Encolher ou não encolher
A recomendação geral é não reduzir o arquivo TLog, porque ele cresceu por um determinado motivo e possivelmente crescerá novamente para o tamanho que era antes. Mas isso é uma história para outro post. Há algumas boas razões, uma delas quando você está recriando o tamanho dos VLFs dentro do seu arquivo TLog.
Respondendo as suas perguntas
Inline logo abaixo de suas suposições e perguntas
Meu entendimento era que fazer backup de um banco de dados:
- Trunca o log de transações e
Esta é uma suposição errada. O backup do seu banco de dados (COMPLETO, DIFERENCIAL) não faz nada com os arquivos TLog. Um backup COMPLETO criará um estado consistente do seu banco de dados, juntamente com as transações confirmadas do arquivo TLog. Um backup DIFF criará um estado consistente de todos os backups anteriores do TLog desde o último backup COMPLETO do seu banco de dados.
No entanto, um backup TLOG criará um backup das transações confirmadas do arquivo TLog, definindo um ponto de verificação e possivelmente (quando não estiver sob carga pesada) liberando os VLFs para reutilização.
Não, ao considerar os backups COMPLETO e DIFF. Não, ao considerar os backups do TLOG, ele liberará os VLFs dentro do arquivo TLog, se o mecanismo do banco de dados tiver algum tempo de sobra.
O que os truncamentos de logs realmente fazem no arquivo de log (LDF)? Esse processo deve impedir que os discos fiquem cheios.
Truncar os logs permite que as VLFs sejam reutilizadas. Isso é tudo.
Esse processo pode ter o benefício de impedir que o arquivo TLog cresça se as configurações de crescimento automático tiverem sido definidas.
Se nenhuma configuração de crescimento automático foi definida , porque seu processo de engenharia de requisitos determinou que o arquivo TLog teria um tamanho fixo, o pior caso aqui é que o TLog é preenchido porque não ocorre nenhum backup do TLog e, portanto, nenhum VLF está sendo liberado. O TLog não pode crescer e as VLFs não são liberadas para permitir que outras transações sejam gravadas no arquivo TLog (ou VLFs internamente).