sql >> Database >  >> RDS >> Mysql

Verwijder enorme hoeveelheden gegevens uit een enorme tabel

Elke oplossing die zoveel gegevens in één transactie probeert te verwijderen, zal het terugdraaisegment overweldigen en veel prestatieproblemen veroorzaken.

Een goed hulpmiddel om te helpen is pt-archiver . Het voert zo efficiënt mogelijk incrementele bewerkingen uit op middelgrote batches van rijen. pt-archiver kan rijen kopiëren, verplaatsen of verwijderen, afhankelijk van de opties.

De documentatie bevat een voorbeeld van het verwijderen van zwevende rijen, wat precies uw scenario is:

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

Als u dit uitvoert, duurt het aanzienlijk langer om de gegevens te verwijderen, maar het zal niet te veel bronnen gebruiken en zonder de service op uw bestaande database te onderbreken. Ik heb het met succes gebruikt om honderden miljoenen rijen met verouderde gegevens te wissen.

pt-archiver maakt deel uit van de Percona Toolkit voor MySQL , een gratis (GPL) set scripts die helpen bij veelvoorkomende taken met MySQL en compatibele databases.



  1. Postgres stopte gewoon willekeurig met werken (Rails, PGSQL.5432)

  2. Mysql-query om telling per maand te krijgen

  3. Hoe overervingsmodellering toepassen in relationele databases?

  4. Primaire sleutel wijzigen