Yüksek bir işlem veritabanı çalıştırıyorum (ortalama ~ 175 bin işlem / Dakika, saatte neredeyse 9 milyon kayıt eklendi ve kaldırıldı)
Yakın zamana kadar, ~ 7.5M kayıtlarında eklediğimiz ve kaldırdığımız için bu çok fazla bir sorun değildi, ancak en son veri akışlarıyla hayalet temizliği, tablolarda / dizinlerde kullanılmayan alan.
Birkaç gün önce 16 tabloda (çoğunlukla 2 tanesi) 53 GB 'Kullanılmayan Alan' değerine ulaştık, böylece sonuç her 5 saniyede bir çalıştığını ve 10 sayfadan fazla çalıştığını bulmak için hayalet temizleme sürecine bakmaya başladı.
Şu anki çözümüm sabahın erken saatlerinde şu komutun üç iş parçacığını çalıştırıyorum:
DECLARE @2hours datetime = dateadd(hour,2,getutcdate())
WHILE getutcdate() < @2hours
BEGIN
DBCC FORCEGHOSTCLEANUP ('DBNAME') WITH NO_INFOMSGS
END
önceki geceden birikmiş işler yakalamak için (silme işlemlerinin çoğu gerçekleştiğinde)
Her saniye söylemek için varsayılan ayarları 5 saniye ve 10 sayfadan değiştirmek veya 20 sayfadan fazla çalıştırmak için herhangi bir yol olup olmadığını merak ediyorum, bunu yapmanın herhangi bir yolu var mı? veya bu konuda yardımcı olabilecek başka işlemler varsa
Yeniden endeksleme en çok etkilenen endekslerde haftada en az bir kez çalışır (çoğu her gün)
Çoğaltma ile birlikte AlwaysOn Yüksek Kullanılabilirlik Kümesi'nde SQL Server 2012 Enterprise SP3_CU8 (yarın CU9'a yükseltme) (ayrı bir sunucuda dağıtım)