Penyetelan kinerja Data tabel Pembersihan di SQL Server 2016
Saya harus Mengotomatiskan Pembersihan volume data yang sangat besar dari tabel utama ke Arsip.
Langkah-langkah yang saya ikuti:
Saya memasukkan data dari tabel utama ke tabel arsip.
Setelah memverifikasi silang hitungan di kedua tabel, menghapus data dari tabel utama.
Risiko: Pernyataan penghapusan mungkin masuk dalam keadaan hung dan DB akan masuk dalam mode pemulihan.
Catatan : kami tidak dapat melakukan operasi DDL apa pun di tabel utama karena ini adalah tabel transaksi langsung. Kita bisa pergi dengan DML.
- Basis data: SQL Server 2016
- OS: Windows dan IIS
Jawaban
DDL adalah salah satu cara utama untuk mempercepat penghapusan record, tetapi melihat bahwa DDL bukanlah pilihan dan Anda menghadapi 'status hang' untuk menghapus pernyataan, mungkin saya menyarankan untuk mencari cara menghapus record dalam batch?
Silakan lihat tautan , dan berikut adalah contoh kueri berdasarkan tautan:
DECLARE @Batch INT = 1000
WHILE 1 = 1
BEGIN
DELETE TOP (@Batch)
FROM MyTable
WHERE Date < ‘20200401’';
IF @@ROWCOUNT < @Batch BREAK
END
Dalam kasus ini, saat kami menghapus menurut Tanggal, pastikan Anda memiliki indeks pada Tanggal sehingga SQL Server dapat dengan cepat mengambil hanya baris tersebut. Anda ingin menghindari penguncian tingkat tabel.