sys.sp_xtp_force_gc (Transact-SQL)
適用対象: SQL Server
メモリ内エンジンが、プロセスによってまだ解放されていないガベージ コレクションの対象となるメモリ内データの削除された行に関連するメモリを解放します。
大量のメモリ内データが解放され、他のメモリ内データにメモリがすぐに必要でない場合、この手順では他の用途でメモリを解放できます。 メモリが他のインメモリ データに対してすぐに使用される可能性がある場合は、ここで解放すると、新しいデータに再割り当てする必要があるため、余分なオーバーヘッドが発生するだけです。
メモリ最適化 TempDB メタデータのメモリ不足エラーの詳細については、「メモリ不足エラー メモリ不足の 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 ではサポートされていません。
構文
sys.sp_xtp_force_gc
[ [ @dbname = ] 'database_name' ]
[ ; ]
引数
[ @dbname = ] 'database_name'
メモリ最適化テーブルの未使用のメモリを解放するデータベース。 @dbname は sysname です。
@dname パラメーターが指定されていない場合、インスタンス内のシステム レベルのメモリ構造のみが考慮されます。
指定された @dname パラメーターが
tempdb
されると、 Memory 最適化 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
動的管理ビューによって、 Memory 最適化 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