服务器配置:ADR 清理器重试超时(分钟)

适用范围:SQL Server

从 SQL Server 2019 (15.x) 开始,此配置设置用于加速数据库恢复 (ADR)。 清理器是定期唤醒并清除不需要的行版本的异步过程。

有时在获取对象或分区级别 IX 锁时,清理器可能因其扫描过程中与用户工作负载发生锁冲突而遇到问题。 清洁器在单独的列表中跟踪此类页。 ADR cleaner retry timeout (min) 可控制清理器在放弃扫描之前仅重试 IX 锁获取和清理所需的时间。 若要在中止的事务映射中保持已中止事务的增长,100% 成功地完成扫描是非常重要的。 如果在规定的超时中无法清理单独列表中的页面,则会放弃当前扫描,并在下一次扫描期间尝试清理。

版本 默认值
SQL Server 2019 (15.x) 120
SQL Server 2022 (16.x) 及更高版本 15

备注

清理器在 SQL Server 2019(15.x)中是以单线程模式运行的。 在 SQL Server 2022(16.x)中,清理器默认为单线程,但可以通过配置 ADR Cleaner Thread Count 服务器配置进行多线程处理。

如果清理器是单线程的,则一次只能处理一个数据库。 如果实例启用了 ADR 的多个数据库,请不要将超时增加到较大的值。 当另一个数据库发生重试时,这样做可能会延迟对一个数据库的清理。

已知问题

对于 SQL Server 2019 (15.x) CU 12 及早期版本,此值可设置为 0。 建议使用本文中的示例手动将值重置为 120,这是设计的默认值。

示例

以下示例将清理程序的重试超时设置为默认值。

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'ADR cleaner retry timeout', 120;
RECONFIGURE;
GO

示例

以下示例将清理器重试超时设置为默认值。

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'ADR cleaner retry timeout', 15;
RECONFIGURE;
GO