sql >> Databasteknik >  >> RDS >> Mysql

Ta bort enorma mängder data från en enorm tabell

Alla lösningar som försöker ta bort så mycket data i en transaktion kommer att överväldiga återställningssegmentet och orsaka många prestandaproblem.

Ett bra hjälpmedel är pt-archiver . Den utför inkrementella operationer på måttliga rader med rader, så effektivt som möjligt. pt-archiver kan kopiera, flytta eller ta bort rader beroende på alternativ.

Dokumentationen innehåller ett exempel på att radera föräldralösa rader, vilket är exakt ditt scenario:

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

Att utföra detta kommer att ta betydligt längre tid att radera data, men det kommer inte att använda för många resurser och utan att avbryta tjänsten på din befintliga databas. Jag har använt det framgångsrikt för att rensa hundratals miljoner rader med föråldrad data.

pt-archiver är en del av Percona Toolkit för MySQL , en gratis (GPL) uppsättning skript som hjälper vanliga uppgifter med MySQL och kompatibla databaser.



  1. Är det möjligt att infoga en ny rad överst i MySQL-tabellen?

  2. Uppdatera Salesforce-data med en SQL Server-markör

  3. få värde från MySQL-databas med PHP

  4. Hur man installerar sqlcmd &bcp på Red Hat