O arquivo de log de transações aumenta para bancos de dados com OLTP in-memory no SQL Server 2022

Sintomas

Quando seus bancos de dados têm o recurso OLTP in-memory habilitado no SQL Server 2022, você observa que o arquivo de log de transações cresce continuamente. Além disso, o log de erros do SQL Server pode ter mensagens como Close thread is falling behind: 4 checkpoints outstanding.

Se você reiniciar a instância do SQL Server, poderá notar que o banco de dados leva muito tempo para concluir o processo de recuperação do banco de dados.

Solucione o problema com sys.databases e sys.dm_db_xtp_checkpoint_stats

  • Quando você usa a exibição de catálogo sys.databases para coletar informações e solucionar esse problema, a coluna log_reuse_wait_desc é mostrada XTP_CHECKPOINT como o motivo do truncamento longo. Esse valor indica que o log de transações está aguardando a ocorrência de um ponto de verificação OLTP in-memory (anteriormente conhecido como Hekaton). Ele sugere um atraso nas operações de ponto de verificação, potencialmente afetando o desempenho ou o crescimento do arquivo de log.

  • Quando você usa a DMV (exibição de gerenciamento dinâmico) do SQL Server sys.dm_db_xtp_checkpoint_stats para coletar informações e solucionar esse problema, a coluna outstanding_checkpoint_count mostra um valor diferente de zero por um longo período de tempo. Isso indica que os pontos de verificação não estão ocorrendo com eficiência, afetando potencialmente o desempenho e o crescimento do arquivo de log.

Causa

O SQL Server 2022 introduziu novos recursos que melhoram o gerenciamento de memória em servidores de memória grande para reduzir as condições de falta de memória. Um problema conhecido nessa alteração às vezes pode levar ao comportamento descrito na seção Sintomas .

Resolução

Para resolver o problema, siga estas etapas:

  1. Adicione -T9810 como o parâmetro de inicialização para a instância do SQL Server.
  2. Reinicie a instância.
  3. Emita um ponto de verificação, faça um backup de log, observe log_reuse_wait_desce reduza o log, se necessário, para recuperar espaço.

Observação

Esse problema foi corrigido na Atualização Cumulativa 7 para SQL Server 2022.

Mais informações

O sinalizador de rastreamento 9810 desabilita o mecanismo OLTP na memória de recuperar a memória TLS (Armazenamento Local de Thread), revertendo para o comportamento do SQL Server 2019.