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 ではサポートされていません。

Transact-SQL 構文表記規則

構文

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

引数

[ @dbname = ] 'database_name'

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

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

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

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

そのため、パラメーターなし、ユーザー データベース名、または@dbname =ユーザー データベース名をsys.sp_xtp_force_gc指定して実行すると、@dbname = N'tempdb'異なる結果が表示される可能性があります。

リターン コードの値

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_チェックpoint_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