sql >> Databáze >  >> RDS >> Mysql

Odstraňte obrovské množství dat z velké tabulky

Jakékoli řešení, které se pokouší odstranit tolik dat v jedné transakci, zahltí segment vrácení zpět a způsobí mnoho problémů s výkonem.

Dobrým nástrojem je pt-archiver . Provádí přírůstkové operace na středně velkých dávkách řádků tak efektivně, jak je to jen možné. pt-archiver může kopírovat, přesouvat nebo mazat řádky v závislosti na možnostech.

Dokumentace obsahuje příklad odstranění osamocených řádků, což je přesně váš scénář:

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

Smazání dat bude trvat podstatně déle, ale nespotřebuje příliš mnoho zdrojů a bez přerušení služby ve vaší stávající databázi. Úspěšně jsem jej použil k vyčištění stovek milionů řádků zastaralých dat.

pt-archiver je součástí Percona Toolkit pro MySQL , bezplatná (GPL) sada skriptů, které pomáhají běžným úkolům s MySQL a kompatibilními databázemi.



  1. Jak zjistím, zda je můj systém Oracle nastaven na podporu Unicode nebo vícebajtových znaků?

  2. @BatchSize chytré nebo hloupé použití?

  3. MySQL DB vybírá záznamy s a bez přehlásek. např.:'.. kde něco =FÖÖ'

  4. 10 tipů pro úsporu času pro uživatele MS Access