高トランザクションデータベースを実行しています(平均で17.5万トランザクション/分、1時間あたり約900万レコードが追加および削除されます)。
750万件のレコードが追加および削除されたため、最近までこれはそれほど問題ではありませんでしたが、最新の大量のデータにより、ゴーストクリーンアップはクリーンアップに追いつくことができないようです。テーブル/インデックスの未使用スペース。
数日前に、16テーブル(主に2つ)全体で53 GBの「未使用スペース」に達したため、ゴーストクリーンアッププロセスの調査が始まり、5秒ごとに実行され、10ページ以上実行されることがわかりました。
私の現在の解決策は、早朝、次のコマンドの3つのスレッドを実行していることです。
DECLARE @2hours datetime = dateadd(hour,2,getutcdate())
WHILE getutcdate() < @2hours
BEGIN
DBCC FORCEGHOSTCLEANUP ('DBNAME') WITH NO_INFOMSGS
END
前日の夜のバックログに追いつくため(ほとんどの削除が行われるとき)
デフォルトの設定を5秒と10ページから毎秒と言って変更したり、20ページを超えるようにしたりする方法はあるのでしょうか。それを行う方法はありますか。それとも、複数のクリーンアップ手順をスピンアップして、データ、またはこれを支援できる他のアクションがある場合
インデックスの再作成は、影響を受けるほとんどのインデックスに対して少なくとも週1回実行されます(ほとんどは隔日です)
AlwaysOn高可用性クラスター上のSQL Server 2012 Enterprise SP3_CU8(明日はCU9にアップグレード)もレプリケーション(別のサーバーに配布)あり