SQL Server 2016'da Tablo Verilerini Temizleme için performans ayarı
Ana tablodan Arşive kadar büyük hacimli verileri Temizlemeyi Otomatikleştirmem gerekiyor.
Takip ettiğim adımlar:
Verileri ana tablodan arşiv tablosuna ekliyorum.
Her iki tablodaki sayımı çapraz doğruladıktan sonra, verileri ana tablodan silme.
Risk: Delete ifadesi askıda duruma geçebilir ve DB kurtarma moduna geçer.
Not : Canlı işlem tablosu olduğundan ana tabloda herhangi bir DDL işlemi yapamıyoruz. DML ile gidebiliriz.
- Veritabanı: SQL Server 2016
- İşletim Sistemi: Windows ve IIS
Yanıtlar
DDL, kayıtların silinmesini hızlandırmanın ana yollarından biridir, ancak DDL'nin bir seçenek olmadığını ve silme ifadeleri için 'askıda kalma durumlarıyla' karşı karşıya olduğunuzu görünce, belki de toplu işlerde kayıtları silmeye bakmanızı öneririm?
Lütfen bağlantıya bakın ve işte bağlantıya dayalı bir sorgu örneği:
DECLARE @Batch INT = 1000
WHILE 1 = 1
BEGIN
DELETE TOP (@Batch)
FROM MyTable
WHERE Date < ‘20200401’';
IF @@ROWCOUNT < @Batch BREAK
END
Bu durumda, Tarihe göre sildiğimizde, Tarih üzerinde bir dizininiz olduğundan emin olun, böylece SQL Server yalnızca bu satırları hızlı bir şekilde alabilir. Masa seviyesinde kilitlemeden kaçınmak isteyeceksiniz.