Partager via


sys.sp_xtp_force_gc (Transact-SQL)

S'applique à : SQL Server

Fait en sorte que le moteur en mémoire libère la mémoire liée aux lignes supprimées de données en mémoire éligibles au garbage collection, qui n’ont pas encore été libérées par le processus.

Dans les cas où un grand volume de données en mémoire a été libéré et où la mémoire n’est pas bientôt nécessaire pour d’autres données en mémoire, cette procédure peut libérer de la mémoire pour d’autres utilisations. Si vous prévoyez que la mémoire est bientôt utilisée pour d’autres données en mémoire, la libération de celle-ci entraîne uniquement une surcharge supplémentaire, car elle doit être réaffectée pour les nouvelles données.

Pour plus d’informations sur les métadonnées TempDB optimisées en mémoire en dehors des erreurs de mémoire, consultez les métadonnées TempDB optimisées en mémoire (HkTempDB) en dehors de la mémoire.

La sys.sp_xtp_force_gc procédure stockée système a été introduite dans SQL Server 2022 (16.x) CU 1 et SQL Server 2019 (15.x) CU 13. Cette procédure stockée n’est actuellement pas prise en charge sur Azure SQL Database et Azure SQL Managed Instance.

Conventions de la syntaxe Transact-SQL

Syntaxe

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

Arguments

[ @dbname = ] 'database_name'

Base de données pour libérer de la mémoire inutilisée pour les tables mémoire optimisées. @dbname est sysname.

  • Lorsque le paramètre @dname n’est pas spécifié, seules les structures de mémoire au niveau du système dans l’instance sont prises en compte.

  • Lorsque le paramètre @dname fourni est tempdb, les structures de mémoire liées aux métadonnées TempDB optimisées en mémoire sont affectées.

  • Lorsque le paramètre @dname fourni est une base de données utilisateur, les structures de mémoire associées aux tables optimisées en mémoire sont affectées.

Par conséquent, vous pouvez vous attendre à voir différents résultats lors de l’exécution sys.sp_xtp_force_gc: sans paramètre, avec @dbname = N'tempdb'ou avec @dbname = un nom de base de données utilisateur.

Valeurs des codes de retour

0 pour réussir. Une valeur différente de zéro pour un échec.

autorisations

Nécessite l'appartenance au rôle de base de données fixe db_owner.

Notes

Le garbage collection optimisé en mémoire se produit normalement et automatiquement en réponse à la sollicitation de la mémoire. Vous pouvez déclencher manuellement le garbage collection avec sys.sp_xtp_force_gc. Vous pouvez observer la réduction du nettoyage de la mémoire dans sys.dm_xtp_system_memory_consumers. Dans SQL Server 2022 (16.x), la sys.dm_xtp_system_memory_consumers vue de gestion dynamique a amélioré les insights spécifiques aux métadonnées TempDB optimisées en mémoire.

Contrairement à sys.sp_xtp_checkpoint_force_garbage_collection, qui marque les fichiers de point de contrôle utilisés dans l’opération de fusion avec le numéro de séquence de journal (LSN) après lequel ils ne sont pas nécessaires et peuvent être récupérés par le garbage collect. sys.sp_xtp_checkpoint_force_garbage_collection Déplace également les fichiers dont le LSN associé est inférieur au point de troncation du journal vers le garbage collection FILESTREAM.

Avant SQL Server 2022 (16.x), exécutez cette procédure stockée deux fois.

Exemples

Pour exécuter le nettoyage de la mémoire sur les structures de mémoire au niveau du système et les métadonnées TempDB optimisées en mémoire dans SQL Server 2022 (16.x) :

EXEC sys.sp_xtp_force_gc N'tempdb';
GO

EXEC sys.sp_xtp_force_gc;
GO

Pour exécuter le nettoyage de la mémoire sur les structures de mémoire au niveau du système et les métadonnées TempDB optimisées en mémoire avant 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