sql >> Database teknologi >  >> RDS >> Mysql

Slet enorme mængder data fra en stor tabel

Enhver løsning, der forsøger at slette så mange data i én transaktion, vil overvælde tilbagerulningssegmentet og forårsage en masse ydeevneproblemer.

Et godt værktøj til at hjælpe er pt-archiver . Den udfører trinvise operationer på moderate rækker af rækker, så effektivt som muligt. pt-archiver kan kopiere, flytte eller slette rækker afhængigt af muligheder.

Dokumentationen indeholder et eksempel på sletning af forældreløse rækker, hvilket er præcis dit scenarie:

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

At udføre dette vil tage betydeligt længere tid at slette dataene, men det vil ikke bruge for mange ressourcer og uden at afbryde tjenesten på din eksisterende database. Jeg har brugt det med succes til at rense hundreder af millioner af rækker af forældede data.

pt-archiver er en del af Percona Toolkit til MySQL , et gratis (GPL) sæt scripts, der hjælper almindelige opgaver med MySQL og kompatible databaser.



  1. MySQL:Få et rækkenummer (rangering) for en specifik række

  2. Multi-Statement TVF'er i Dynamics CRM

  3. Brug af INSERT INTO fra SQL Server til at ændre Salesforce-data

  4. Importer filstørrelsesgrænse i PHPMyAdmin