Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Usuń ogromne ilości danych z ogromnej tabeli

Każde rozwiązanie, które próbuje usunąć tak wiele danych w jednej transakcji, przytłoczy segment wycofywania i spowoduje wiele problemów z wydajnością.

Dobrym narzędziem do pomocy jest pt-archiver . Wykonuje operacje przyrostowe na partiach wierszy o średniej wielkości, tak wydajnie, jak to tylko możliwe. pt-archiver może kopiować, przenosić lub usuwać wiersze w zależności od opcji.

Dokumentacja zawiera przykład usuwania osieroconych wierszy, co jest dokładnie twoim scenariuszem:

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

Wykonanie tego zajmie znacznie więcej czasu, aby usunąć dane, ale nie spowoduje to użycia zbyt wielu zasobów i bez przerywania usługi w istniejącej bazie danych. Użyłem go z powodzeniem do usunięcia setek milionów wierszy nieaktualnych danych.

pt-archiver jest częścią Percona Toolkit for MySQL , darmowy (GPL) zestaw skryptów, które pomagają w wykonywaniu typowych zadań z MySQL i kompatybilnymi bazami danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak zrozumieć nie można połączyć komunikatów o błędach mysql?

  2. zamów hierarchię drzewa sql

  3. Pomijanie ostrzeżeń PDO

  4. Git bash w systemie Windows 7. Polecenie mysqldump nie działa

  5. Grupuj zapytania mysql co 15 minut