sys.sp_xtp_checkpoint_force_garbage_collection (Transact-SQL)

适用于:SQL Server

将合并操作中使用的源文件标记为日志序列号(LSN),之后不需要这些文件,并且可以进行垃圾回收。 此外, sys.sp_xtp_checkpoint_force_garbage_collection 将关联的 LSN 低于日志截断点的文件移动到 FILESTREAM 垃圾回收。

sys.sp_xtp_force_gc形成鲜明对比,这会导致内存中引擎释放与已删除的内存中数据行相关的内存,这些行有资格进行垃圾回收,而垃圾回收尚未由进程释放。

Transact-SQL 语法约定

语法

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

参数

[ @dbname = ] 'database_name'

要对其运行垃圾收集的数据库。 默认为当前数据库。 @dbnamesysname

返回代码值

0 成功。 非零表示失败。

结果集

返回的行包含以下信息:

说明
num_collected_items 指示已移动到 FILESTREAM 垃圾回收的文件数。 这些文件的日志序列号(LSN)小于日志截断点的 LSN。
num_marked_for_collection_items 指示已使用日志结尾 LSN 的日志块 ID 更新其 LSN 的数据/差异文件数。
last_collected_xact_seqno 返回文件已移动到 FILESTREAM 垃圾回收的最后一个对应的 LSN。

注解

可以使用另一个系统存储过程 sys.sp_xtp_force_gc手动触发垃圾回收。 可以观察sys.dm_xtp_system_memory_consumers内存清理的减少。

在 SQL Server 2022(16.x)中 ,sys.dm_xtp_system_memory_consumers 动态管理视图改进了特定于 内存优化 tempdb 元数据的见解。

权限

要求具有 db_owner 固定数据库角色中的成员资格。

示例

若要在数据库中标记不需要的源文件进行垃圾回收 tempdb ,请使用以下示例脚本:

EXEC sys.sp_xtp_checkpoint_force_garbage_collection N'tempdb';