Dari Aknutman

Selamat Datang semoga layanan kami memberikan informasi yang anda cari. (Dan mohon comment-nya :-D)

Thursday, August 18, 2016

Menghapus record dalam jumlah besar pada SQL SERVER tanpa menambah beban Harddisk

Dear Pembaca setia,
Hari ini penulis ingin sharing tentang bagaimana melakukan penghapusan record tanpa menambah beban space harddisk.



Pada dasarnya, penghapusan rekod pada tabel akan mengkonsumsi space yang ada di harddisk. Gambarannya, record akan disimpan di harddisk terlebih dahulu sebelum dilakukan penghapusan, sehingga saat penghapusan rekord dibatalkan sebelum selesai, maka record yang ada akan dikembalikan, atau di-Rollback.

Dengan demikian, untuk penghapusan record dalam jumlah besar (diatas 100 juta record), maka konsumsi harddisk akan meningkat untuk Log File dari database tersebut, melebihi ukuran dari database itu sendiri.

Solusinya, penghapusan akan dilakukan per-n-row sehingga transaksi yang disimpan di Log File tidak tumbuh dalam jumlah yang besar. Berikut QUERY-nya


DECLARE @Deleted_Rows INT;
SET @Deleted_Rows = 1;


WHILE (@Deleted_Rows > 0)
  BEGIN
   -- Delete some small number of rows at a time
     DELETE TOP (10000)  [MyTable]

  SET @Deleted_Rows = @@ROWCOUNT;
END

Demikian untuk tutorial hari ini, salam Coding.