Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara menghapus data tabel yang besar dalam SQL tanpa log?

  1. Jika Anda Menghapus Semua baris dalam tabel itu, opsi paling sederhana adalah dengan Memotong tabel, seperti

     TRUNCATE TABLE LargeTable
     GO
    

Tabel terpotong hanya akan mengosongkan tabel, Anda tidak dapat menggunakan klausa WHERE untuk membatasi baris yang akan dihapus dan tidak ada pemicu yang akan diaktifkan.

  1. Di sisi lain jika Anda menghapus lebih dari 80-90 Persen data, katakanlah jika Anda memiliki total 11 juta baris dan Anda ingin menghapus 10 juta, cara lain adalah dengan Menyisipkan 1 juta baris ini (catatan yang ingin Anda simpan ) ke meja pementasan lain. Potong tabel besar ini dan Sisipkan kembali 1 juta baris ini.

  2. Atau jika izin/tampilan atau objek lain yang memiliki tabel besar ini sebagai tabel dasarnya tidak terpengaruh dengan menjatuhkan tabel ini, Anda bisa memasukkan jumlah baris yang relatif kecil ini ke tabel lain, letakkan tabel ini dan buat tabel lain dengan yang sama skema, dan impor baris ini kembali ke tabel ex-Large ini.

  3. Satu opsi terakhir yang dapat saya pikirkan adalah mengubah Recovery Mode to SIMPLE basis data Anda lalu hapus baris dalam batch yang lebih kecil menggunakan loop while seperti ini:

     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)  LargeTable 
          WHERE readTime < dateadd(MONTH,-7,GETDATE())
    
       SET @Deleted_Rows = @@ROWCOUNT;
     END
    

dan jangan lupa untuk mengubah mode Pemulihan kembali ke penuh dan saya pikir Anda harus mengambil cadangan untuk membuatnya sepenuhnya efektif (perubahan atau mode pemulihan).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SET TEKSTIZE Tidak Bekerja di SQL Server? Periksa ini.

  2. Menggunakan prosedur tersimpan SQL Server dari Python (pyodbc)

  3. Kapan kita harus menggunakan NVARCHAR/NCHAR daripada VARCHAR/CHAR di SQL Server?

  4. Bagaimana menemukan dependensi kunci asing di SQL Server?

  5. Pemecahan Masalah Hibah Memori Variabel di SQL Server