sys.sp_xtp_force_gc (Transact-SQL)

適用対象: SQL サーバー

メモリ内エンジンが、プロセスによってまだ解放されていないガベージ コレクションの対象となるメモリ内データの削除された行に関連するメモリを解放します。

大量のメモリ内データが解放され、他のメモリ内データにメモリがすぐに必要でない場合、この手順では他の用途でメモリを解放できます。 メモリが他のインメモリ データに対してすぐに使用される可能性がある場合は、ここで解放すると、新しいデータに再割り当てする必要があるため、余分なオーバーヘッドが発生するだけです。

メモリ最適化 TempDB メタデータのメモリ不足エラーの詳細については、メモリ不足エラー Memory 最適化 tempdb メタデータ (HkTempDB) を参照してください

sys.sp_xtp_force_gc システム ストアド プロシージャは、SQL Server 2022 (16.x) CU 1 および SQL Server 2019 (15.x) CU 13 で導入されました。 このストアド プロシージャは、現在、Azure SQL Database と Azure SQL Managed Instance ではサポートされていません。

Transact-SQL 構文表記規則

構文

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

引数

[ @dbname = ] 'database_name'

メモリ最適化テーブルの未使用のメモリを解放するデータベース。 @dbnamesysname です。

  • @dname パラメーターが指定されていない場合、インスタンス内のシステム レベルのメモリ構造のみが考慮されます。

  • 指定された @dname パラメーターがtempdbされると、メモリ最適化 tempdb メタデータに関連メモリ構造が影響を受けます。

  • 指定された @dname パラメーターがユーザー データベースの場合、メモリ構造に関連するメモリ最適化テーブルが影響を受けます。

そのため、 sys.sp_xtp_force_gcの実行時には、パラメーターなし、 @dbname = N'tempdb'、またはユーザー データベース名の @dbname = など、さまざまな結果が表示されることがあります。

リターン コードの値

0 成功を収めます。 エラーの場合は 0 以外。

アクセス許可

db_owner 固定データベース ロール内でメンバーシップが必要です。

解説

メモリ最適化ガベージ コレクションは、メモリ不足に応じて正常かつ自動的に実行されます。 sys.sp_xtp_force_gcを使用してガベージ コレクションを手動でトリガーできます。 sys.dm_xtp_system_memory_consumersでメモリクリーンアップの減少を観察できます。 SQL Server 2022 (16.x) では、 sys.dm_xtp_system_memory_consumers 動的管理ビューによって、 メモリ最適化 tempdb メタデータに固有の分析情報が向上

sys.sp_xtp_checkpoint_force_garbage_collectionとは対照的に、マージ操作で使用されるチェックポイント ファイルをログ シーケンス番号 (LSN) でマークし、その後は不要になり、ガベージ コレクションを実行できます。 また、 sys.sp_xtp_checkpoint_force_garbage_collection は、関連する LSN がログ切り捨てポイントより低いファイルを FILESTREAM ガベージ コレクションに移動します。

SQL Server 2022 (16.x) より前のバージョンでは、このストアド プロシージャを 2 回実行します。

SQL Server 2022 (16.x) でシステム レベルのメモリ構造とメモリ最適化 TempDB メタデータに対してガベージ クリーンアップを実行するには:

EXEC sys.sp_xtp_force_gc N'tempdb';
GO

EXEC sys.sp_xtp_force_gc;
GO

SQL Server 2022 (16.x) より前のシステム レベルのメモリ構造とメモリ最適化 TempDB メタデータに対してガベージ クリーンアップを実行するには:

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