Compartilhar via


O ficheiro de registo de transações cresce para bases de dados com In-Memory OLTP no SQL Server 2022

Sintomas

Quando as bases de dados têm a funcionalidade OLTP Dentro da Memória ativada no SQL Server 2022, repara que o ficheiro de registo de transações aumenta continuamente. Além disso, o registo de erros do SQL Server pode ter mensagens como Close thread is falling behind: 4 checkpoints outstanding.

Se reiniciar a instância do SQL Server, poderá reparar que a base de dados demora muito tempo a concluir o processo de recuperação da base de dados.

Resolver o problema com sys.databases e sys.dm_db_xtp_checkpoint_stats

  • Quando utiliza a vista de catálogo sys.databases para recolher informações e resolver este problema, a coluna log_reuse_wait_desc é apresentada XTP_CHECKPOINT como o motivo da truncagem prolongada. Este valor indica que o registo de transações está a aguardar a ocorrência de um ponto de verificação OLTP (anteriormente conhecido como Hekaton) In-Memory. Sugere um atraso nas operações de ponto de verificação, que pode afetar potencialmente o desempenho ou o crescimento do ficheiro de registo.

  • Quando utiliza a vista de gestão dinâmica (DMV) do SQL Server sys.dm_db_xtp_checkpoint_stats para recolher informações e resolver este problema, a coluna outstanding_checkpoint_count mostra um valor diferente de zero durante um longo período de tempo. Indica que os pontos de verificação não estão a ocorrer de forma eficiente, afetando potencialmente o desempenho e o crescimento dos ficheiros de registo.

Motivo

O SQL Server 2022 introduziu novas capacidades que melhoram a gestão da memória em grandes servidores de memória para reduzir as condições de memória esgotada. Um problema conhecido nesta alteração pode, por vezes, levar ao comportamento descrito na secção Sintomas .

Resolução

Para resolver o problema, siga estes passos:

  1. Adicione -T9810 como o parâmetro de arranque da instância do SQL Server.
  2. Reinicie a instância.
  3. Emita um ponto de verificação, faça uma cópia de segurança de registo, observe log_reuse_wait_desce reduza o registo, se necessário, para recuperar espaço.

Mais informações

O sinalizador de rastreio 9810 desativa o motor OLTP In-Memory de recuperar a memória do Armazenamento Local de Threads (TLS), revertendo para o comportamento do SQL Server 2019.