Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hapus sejumlah besar data dari tabel besar

Solusi apa pun yang mencoba menghapus begitu banyak data dalam satu transaksi akan membebani segmen rollback dan menyebabkan banyak masalah kinerja.

Alat yang baik untuk membantu adalah pt-archiver . Ini melakukan operasi tambahan pada kumpulan baris berukuran sedang, seefisien mungkin. pt-archiver dapat menyalin, memindahkan, atau menghapus baris tergantung pada opsi.

Dokumentasi menyertakan contoh penghapusan baris yatim piatu, yang persis seperti skenario Anda:

pt-archiver --source h=host,D=db,t=VALUE --purge \
  --where 'NOT EXISTS(SELECT * FROM `KEY` WHERE key_id=`VALUE`.key_id)' \
  --limit 1000 --commit-each

Eksekusi ini akan memakan waktu lebih lama secara signifikan untuk menghapus data, tetapi tidak akan menggunakan terlalu banyak sumber daya, dan tanpa mengganggu layanan pada database Anda yang sudah ada. Saya telah berhasil menggunakannya untuk membersihkan ratusan juta baris data usang.

pt-archiver adalah bagian dari Percona Toolkit untuk MySQL , kumpulan skrip (GPL) gratis yang membantu tugas umum dengan MySQL dan database yang kompatibel.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Host server MySQL tidak dikenal

  2. Apa itu SQL dinamis?

  3. Buat Spark Dataframe dari SQL Query

  4. Apakah MS-SQL mendukung tabel dalam memori?

  5. Dapatkan kumpulan catatan terakhir yang berbeda