sql >> Base de Datos >  >> RDS >> Mysql

Eliminar grandes cantidades de datos de una tabla enorme

Cualquier solución que intente eliminar tantos datos en una transacción abrumará el segmento de reversión y causará muchos problemas de rendimiento.

Una buena herramienta para ayudar es pt-archiver . Realiza operaciones incrementales en lotes de filas de tamaño moderado, de la manera más eficiente posible. pt-archiver puede copiar, mover o eliminar filas según las opciones.

La documentación incluye un ejemplo de eliminación de filas huérfanas, que es exactamente su escenario:

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

Ejecutar esto llevará mucho más tiempo para eliminar los datos, pero no utilizará demasiados recursos y sin interrumpir el servicio en su base de datos existente. Lo he usado con éxito para purgar cientos de millones de filas de datos obsoletos.

pt-archiver es parte del Percona Toolkit for MySQL , un conjunto gratuito (GPL) de secuencias de comandos que ayudan a realizar tareas comunes con MySQL y bases de datos compatibles.