En az etkiye sahip büyük masalar nasıl elden çıkarılır?
Temizlenmesi veya atılması gereken bir günlükte sevk edilen db'de yarı büyük iki ilişkili tabloya (284,6876,609 satır - 156,785,176 KB ve 4,2628,162 satır - 2,212,464 KB) sahip olun. Gönderi günlüğü üzerindeki etkiyi en aza indirirken bu iki tabloyu nasıl atabilirim?
Yanıtlar
DROP
Tabloları seçerseniz , minimum günlüklerin oluşturulmasına neden olur, çünkü çöp toplamayı kullanılan alanda hemen gerçekleşmeye zorlamaz, yalnızca referansı kaldırır. Benzer şekilde aynı sonucu elde edebilirsiniz TRUNCATE
(büyük masalarda bundan daha fazla ek yük olabileceğini düşünüyorum DROP
, bunu araştırmam ve cevabımı buna göre güncellemem gerekecek).
Bu , SQL Server'ın ertelenmiş bırakma adı verilen bir özelliğinden kaynaklanan, neden TRUNCATE
ve DROP
işlemlerin görünüşte hızlı olduğunu ve minimum günlükler oluşturduğunu ayrıntılarıyla anlatan gerçekten iyi bir makaledir .
Her iki durumda DELETE
da, hedef veritabanında gönderilmesi ve yeniden uygulanması gereken bir ton günlük oluşturacak başka bir durumdan kaçının .
Bu StackOverflow Sorusu , verileri büyük bir tablodan verimli bir şekilde kaldırma hakkında iyi bilgiler içeren birden fazla yanıta sahiptir (bazıları özellikle sorunuzla ilgili olmayabilir, ancak ileride başvurmak için iyidir veya benzer sorunları olan diğer kullanıcılar için iyidir).