Freigeben über


sys.sp_xtp_force_gc (Transact-SQL)

Gilt für: SQL Server

Bewirkt, dass das In-Memory-Modul Speicher im Zusammenhang mit gelöschten Zeilen mit In-Memory-Daten freigibt, die für die Garbage Collection berechtigt sind, die noch nicht vom Prozess freigegeben wurden.

In Fällen, in denen ein großes Volumen von In-Memory-Daten freigegeben wurde und der Speicher für andere Speicherdaten nicht bald benötigt wird, kann dieses Verfahren Arbeitsspeicher für andere Zwecke freigeben. Wenn Sie davon ausgehen, dass der Speicher in Kürze für andere In-Memory-Daten verwendet wird, würde dies nur zu zusätzlichem Aufwand führen, da er für die neuen Daten neu zugeordnet werden muss.

Weitere Informationen zu speicheroptimierten TempDB-Metadaten aus Arbeitsspeicherfehlern finden Sie unter speicheroptimierte TempDB-Metadaten (HkTempDB) außerhalb des Arbeitsspeichers.

Die sys.sp_xtp_force_gc gespeicherte Systemprozedur wurde in SQL Server 2022 (16.x) CU 1 und SQL Server 2019 (15.x) CU 13 eingeführt. Diese gespeicherte Prozedur wird derzeit für Azure SQL-Datenbank und Azure SQL verwaltete Instanz nicht unterstützt.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @dbname = ] 'database_name'

Die Datenbank, die nicht genutzten Arbeitsspeicher für speicheroptimierte Tabellen freigibt. @dbname ist "sysname".

  • Wenn der parameter @dname nicht angegeben ist, werden nur Speicherstrukturen auf Systemebene in der Instanz berücksichtigt.

  • Wenn der bereitgestellte parameter @dname ist tempdb, sind die Speicherstrukturen im Zusammenhang mit speicheroptimierten TempDB-Metadaten betroffen.

  • Wenn der bereitgestellte @dname Parameter eine Benutzerdatenbank ist, sind die speicheroptimierten Speicherstrukturen betroffen.

Daher erwarten Sie möglicherweise, dass bei der Ausführung unterschiedliche Ergebnisse angezeigt sys.sp_xtp_force_gcwerden: ohne Parameter, mit @dbname = N'tempdb'oder mit @dbname = einem Benutzernamen.

Rückgabecodewerte

0 für Erfolg. Ungleich 0 für Fehler.

Berechtigungen

Hierfür ist die Mitgliedschaft in der festen Datenbankrolle db_owner erforderlich.

Hinweise

Speicheroptimierte Garbage Collection erfolgt normal und automatisch als Reaktion auf den Arbeitsspeicherdruck. Sie können die Garbage Collection manuell mit sys.sp_xtp_force_gc. Sie können die Reduzierung der Speicherbereinigung in sys.dm_xtp_system_memory_consumers beobachten. In SQL Server 2022 (16.x) hat die sys.dm_xtp_system_memory_consumers dynamische Verwaltungsansicht spezifische Einblicke für speicheroptimierte TempDB-Metadaten verbessert.

Kontrast zu sys.sp_xtp_checkpoint_force_garbage_collection, wodurch Prüfpunktdateien markiert werden, die im Zusammenführungsvorgang mit der Protokollsequenznummer (Log Sequence Number, LSN) verwendet werden, nach der sie nicht benötigt werden und garbage collection werden können. Verschiebt außerdem die Dateien, sys.sp_xtp_checkpoint_force_garbage_collection deren zugeordnete LSN niedriger als der Protokollabkürzungspunkt ist, in die Garbage Collection von FILESTREAM.

Führen Sie vor SQL Server 2022 (16.x) zweimal diese gespeicherte Prozedur aus.

Beispiele

So führen Sie die Garbage Cleanup für Arbeitsspeicherstrukturen auf Systemebene und speicheroptimierte TempDB-Metadaten in SQL Server 2022 (16.x) aus:

EXEC sys.sp_xtp_force_gc N'tempdb';
GO

EXEC sys.sp_xtp_force_gc;
GO

So führen Sie die Garbage Cleanup für Arbeitsspeicherstrukturen auf Systemebene und speicheroptimierte TempDB-Metadaten vor SQL Server 2022 (16.x) aus:

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