sys.sp_xtp_force_gc (Transact-SQL)

Aplica-se a: SQL Server

Faz com que o motor em memória liberte memória relacionada com linhas eliminadas de dados em memória que são elegíveis para recolha de lixo, e que ainda não foram libertadas pelo processo.

Nos casos em que um grande volume de dados em memória foi libertado, e onde a memória não é necessária para outros dados em memória, este procedimento pode libertar memória para outros usos. Se antecipar que a memória será usada em breve para outros dados em memória, libertá-la aqui só causaria sobrecarga adicional, pois teria de ser realocada para os novos dados.

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

O sys.sp_xtp_force_gc sistema de armazenamento do sistema foi introduzido no SQL Server 2022 (16.x) 1 e no SQL Server 2019 (15.x) 13. Este procedimento armazenado não é atualmente suportado no Base de Dados SQL do Azure e no Azure SQL Managed Instance.

Transact-SQL convenções de sintaxe

Syntax

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

Arguments

[ @database_name = ] N'database_name'

A base de dados para libertar memória não utilizada para tabelas otimizadas para memória. @database_name é sysname.

  • Quando o parâmetro @database_name não é especificado, apenas são consideradas estruturas de memória ao nível do sistema na instância.

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

  • Quando o parâmetro @database_name fornecido é uma base de dados do utilizador, as tabelas otimizadas para memória relacionadas com estruturas de memória são afetadas.

Portanto, pode esperar ver resultados diferentes ao executar sys.sp_xtp_force_gc: sem parâmetro, com @database_name = N'tempdb', ou com @database_name = um nome de base de dados de utilizador.

Valores de código de retorno

0 para o sucesso. Diferente de zero para falha.

Permissions

Requer associação à função fixa de base de dados db_owner.

Remarks

A recolha de lixo otimizada para memória ocorre normalmente e automaticamente em resposta à pressão da memória. Pode ativar manualmente a recolha de lixo com sys.sp_xtp_force_gc. Pode observar a redução na limpeza da memória em sys.dm_xtp_system_memory_consumers. No SQL Server 2022 (16.x), a sys.dm_xtp_system_memory_consumers visão de gestão dinâmica melhorou insights específicos dos metadados TempDB otimizados para memória.

Em contraste com sys.sp_xtp_checkpoint_force_garbage_collection, que marca ficheiros de checkpoint usados na operação de fusão com o número de sequência log (LSN), após o qual não são necessários e podem ser recolhidos de lixo. Além disso, sys.sp_xtp_checkpoint_force_garbage_collection move os ficheiros cujo LSN associado é inferior ao ponto de truncamento do log para a recolha de lixo FILESTREAM.

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

Examples

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

EXECUTE sys.sp_xtp_force_gc N'tempdb';
GO

EXECUTE sys.sp_xtp_force_gc;
GO

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

EXECUTE sys.sp_xtp_force_gc N'tempdb';
GO

EXECUTE sys.sp_xtp_force_gc N'tempdb';
GO

EXECUTE sys.sp_xtp_force_gc;
GO

EXECUTE sys.sp_xtp_force_gc;
GO