サーバー構成: 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
サーバー構成を構成することでマルチスレッドにすることができます。
クリーナーがシングル スレッドの場合、一度に動作できるデータベースは 1 つだけです。 インスタンスで 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