SQL Server 2016'da Tablo Verilerini Temizleme için performans ayarı

Aug 15 2020

Ana tablodan Arşive kadar büyük hacimli verileri Temizlemeyi Otomatikleştirmem gerekiyor.

Takip ettiğim adımlar:

  1. Verileri ana tablodan arşiv tablosuna ekliyorum.

  2. 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

4 MTay Aug 15 2020 at 15:58

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.