Compartir a través de


sys.sp_xtp_force_gc (Transact-SQL)

Se aplica a: SQL Server

Hace que el motor en memoria libere memoria relacionada con las filas eliminadas de datos en memoria que son aptas para la recolección de elementos no utilizados, que aún no ha sido liberado por el proceso.

En los casos en los que se ha liberado un gran volumen de datos en memoria y en los que la memoria no se necesita pronto para otros datos en memoria, este procedimiento puede liberar memoria para otros usos. Si prevé que la memoria que se usa pronto para otros datos en memoria, liberarla aquí solo provocaría sobrecarga adicional, ya que tendría que reasignarse para los nuevos datos.

Para obtener más información sobre los metadatos tempDB optimizados para memoria fuera de los errores de memoria, consulte Metadatos de tempdb optimizados para memoria (HkTempDB) de errores de memoria.

El sys.sp_xtp_force_gc procedimiento almacenado del sistema se introdujo en SQL Server 2022 (16.x) CU 1 y SQL Server 2019 (15.x) CU 13. Este procedimiento almacenado no se admite actualmente en Azure SQL Database y Azure SQL Instancia administrada.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

[ @dbname = ] 'database_name'

Base de datos para liberar memoria no utilizada para tablas optimizadas para memoria. @dbname es sysname.

  • Cuando no se especifica el parámetro @dname , solo se tienen en cuenta las estructuras de memoria de nivel del sistema de la instancia.

  • Cuando el parámetro @dname proporcionado es tempdb, las estructuras de memoria relacionadas con los metadatos tempdb optimizados para memoria se ven afectadas .

  • Cuando el parámetro @dname proporcionado es una base de datos de usuario, las estructuras de memoria relacionadas con las tablas optimizadas para memoria se ven afectadas.

Por lo tanto, es posible que espere ver resultados diferentes al ejecutar sys.sp_xtp_force_gc: sin un parámetro, con @dbname = N'tempdb'o con @dbname = un nombre de base de datos de usuario.

Valores de código de retorno

0 para éxito. Distinto de cero para error.

Permisos

Requiere pertenencia al rol fijo de base de datos db_owner.

Comentarios

La recolección de elementos no utilizados optimizada para memoria se produce normalmente y automáticamente en respuesta a la presión de memoria. Puede desencadenar manualmente la recolección de elementos no utilizados con sys.sp_xtp_force_gc. Puede observar la reducción de la limpieza de memoria en sys.dm_xtp_system_memory_consumers. En SQL Server 2022 (16.x), la sys.dm_xtp_system_memory_consumers vista de administración dinámica ha mejorado la información específica de los metadatos tempdb optimizados para memoria.

Contrasta con sys.sp_xtp_checkpoint_force_garbage_collection, que marca los archivos de punto de control usados en la operación de combinación con el número de secuencia de registro (LSN) después del cual no son necesarios y se pueden recopilar elementos no utilizados. Además, sys.sp_xtp_checkpoint_force_garbage_collection mueve los archivos cuyo LSN asociado es menor que el punto de truncamiento del registro a la recolección de elementos no utilizados FILESTREAM.

Antes de SQL Server 2022 (16.x), ejecute este procedimiento almacenado dos veces.

Ejemplos

Para ejecutar la limpieza de elementos no utilizados en estructuras de memoria de nivel de sistema y metadatos tempDB optimizados para memoria en SQL Server 2022 (16.x):

EXEC sys.sp_xtp_force_gc N'tempdb';
GO

EXEC sys.sp_xtp_force_gc;
GO

Para ejecutar la limpieza de elementos no utilizados en estructuras de memoria de nivel del sistema y metadatos tempDB optimizados para memoria antes de 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