sys.sp_xtp_force_gc (Transact-SQL)

Aplica-se a:SQL Server

Faz com que o mecanismo na memória libere memória relacionada a linhas excluídas de dados na memória que são elegíveis para coleta de lixo, que ainda não foram liberadas pelo processo.

Nos casos em que um grande volume de dados na memória foi liberado e em que a memória não é necessária para outros dados na memória, esse procedimento pode liberar memória para outros usos. Se você antecipar a memória que será usada em breve para outros dados na memória, liberá-la aqui só causaria sobrecarga extra, pois precisaria ser realocada para os novos dados.

Para obter mais informações sobre metadados TempDB otimizados para memória fora de erros de memória, consulte Metadados tempdb otimizados para memória (HkTempDB) fora de erros de memória.

O sys.sp_xtp_force_gc procedimento armazenado do sistema foi introduzido no SQL Server 2022 (16.x) 1 e no SQL Server 2019 (15.x) 13. No momento, esse procedimento armazenado não tem suporte no Banco de Dados SQL do Azure e na Instância Gerenciada SQL do Azure.

Convenções de sintaxe de Transact-SQL

Sintaxe

sys.sp_xtp_force_gc
    [ [ @dbname = ] 'database_name' ]
[ ; ]

Argumentos

@dbname [ = ] 'database_name'

O banco de dados para liberar memória não utilizada para tabelas otimizadas para memória. @dbname é sysname.

  • Quando o parâmetro @dname não é especificado, somente as estruturas de memória no nível do sistema na instância são consideradas.

  • Quando o parâmetro @dname fornecido é tempdb, as estruturas de memória relacionadas aos metadados tempdb otimizados para memória são afetadas.

  • Quando o parâmetro @dname fornecido é um banco de dados do usuário, as tabelas de memória relacionadas a estruturas de memória otimizadas para memória são afetadas.

Portanto, você pode esperar ver resultados diferentes ao executar sys.sp_xtp_force_gc: sem um parâmetro, com , ou com @dbname = N'tempdb'@dbname = um nome de banco de dados de usuário.

Valores do código de retorno

0 para o sucesso. Diferente de zero para falha.

Permissões

Requer associação na função de banco de dados fixa db_owner.

Comentários

A coleta de lixo otimizada para memória acontece normalmente e automaticamente em resposta à pressão da memória. Você pode acionar manualmente a coleta de lixo com sys.sp_xtp_force_gco . Você pode observar a redução na limpeza de memória em sys.dm_xtp_system_memory_consumers. No SQL Server 2022 (16.x), o sys.dm_xtp_system_memory_consumers modo de exibição de gerenciamento dinâmico aprimorou insights específicos para metadados tempdb otimizados para memória.

Contraste com sys.sp_xtp_checkpoint_force_garbage_collection, que marca os arquivos de ponto de verificação usados na operação de mesclagem com o número de sequência de log (LSN) após o qual eles não são necessários e podem ser coletados. Além disso, sys.sp_xtp_checkpoint_force_garbage_collection move os arquivos cujo LSN associado é menor que o ponto de truncamento de log para a coleta de lixo FILESTREAM.

Antes do SQL Server 2022 (16.x), execute esse procedimento armazenado duas vezes.

Exemplos

Para executar a limpeza de lixo em estruturas de memória no nível do sistema e metadados TempDB otimizados para memória no SQL Server 2022 (16.x):

EXEC sys.sp_xtp_force_gc N'tempdb';
GO

EXEC sys.sp_xtp_force_gc;
GO

Para executar a limpeza de lixo em estruturas de memória no nível do sistema e metadados do TempDB otimizados para memória antes do SQL Server 2022 (16.x):

EXEC sys.sp_xtp_force_gc N'tempdb';
GO

EXEC sys.sp_xtp_force_gc N'tempdb';
GO

EXEC sys.sp_xtp_force_gc;
GO

EXEC sys.sp_xtp_force_gc;
GO