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形成鲜明对比,这会导致内存中引擎释放与已删除的内存中数据行相关的内存,这些行有资格进行垃圾回收,而垃圾回收尚未由进程释放。
语法
sys.sp_xtp_checkpoint_force_garbage_collection
[ [ @dbname = ] 'database_name' ]
[ ; ]
参数
[ @dbname = ] 'database_name'
要对其运行垃圾收集的数据库。 默认为当前数据库。 @dbname 为 sysname。
返回代码值
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';