Bagaimana cara membuang meja besar dengan dampak paling kecil terhadap pengiriman log?

Dec 31 2020

Memiliki dua tabel terkait semi besar (284.686.609 baris - 156.785.176 KB dan 4.2628.162 baris - 2.212.464 KB) dalam log yang dikirim db yang perlu dibersihkan atau dibuang. Bagaimana cara membuang kedua tabel ini sambil meminimalkan dampak pada pengiriman log?

Jawaban

11 J.D. Dec 31 2020 at 21:08

Jika Anda DROPtabel, itu akan menyebabkan log minimal yang dihasilkan karena tidak segera memaksa pengumpulan sampah terjadi pada ruang yang digunakan, itu hanya pada dasarnya hanya menghapus referensi. Anda juga dapat mencapai hasil yang sama dengan TRUNCATE(meskipun saya pikir pada tabel besar mungkin ada lebih banyak overhead daripada DROP, saya harus meneliti ini dan memperbarui jawaban saya sesuai).

Ini adalah artikel yang sangat bagus yang merinci mengapa TRUNCATEdan DROPoperasinya sangat cepat dan menghasilkan log minimal, yang disebabkan oleh fitur SQL Server yang disebut deferred drop .

Bagaimanapun, hindari DELETEsebaliknya yang akan menghasilkan banyak log yang perlu dikirim dan diterapkan kembali di database target.

Pertanyaan StackOverflow ini memiliki beberapa jawaban dengan informasi yang baik tentang penghapusan data secara efisien dari tabel besar (beberapa mungkin tidak secara spesifik terkait dengan pertanyaan Anda, tetapi bagus untuk referensi di masa mendatang atau pengguna lain dengan masalah serupa).