Maison  >  Article  >  base de données  >  Comment supprimer efficacement des millions de lignes en double dans MySQL sans perturber les opérations normales ?

Comment supprimer efficacement des millions de lignes en double dans MySQL sans perturber les opérations normales ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-05 12:11:02505parcourir

How to Efficiently Delete Millions of Duplicate Rows in MySQL Without Disrupting Normal Operations?

Optimisation de la suppression massive de lignes dans MySQL

Lorsque vous traitez des millions de lignes en double dans une table massive, une suppression efficace devient primordiale pour éviter de perturber la normale opérations de base de données. Cet article explore des approches alternatives pour minimiser les temps de verrouillage des tables et maintenir la disponibilité du site.

Option 1 : Suppression progressive

Plutôt que d'exécuter une seule requête de suppression exhaustive, cette méthode utilise une boucle pour effectuer de nombreuses opérations de suppression plus petites. Bien que cette approche résolve le verrouillage des tables, elle peut néanmoins augmenter considérablement la charge de la base de données et le temps d'exécution.

Option 2 : Renommer et restaurer

Renommer la table affectée, recréer une table vide un, puis renommer les tables après le nettoyage offre une solution moins intrusive. Cependant, ce processus implique plusieurs étapes et peut interrompre la fonctionnalité de création de rapports. Le processus de fusion de données peut également être difficile en fonction du type de données spécifique.

Solution optimale

Une technique alternative consiste à utiliser un script qui exécute la requête suivante dans un loop:

DELETE FROM `table`
WHERE (whatever criteria)
ORDER BY `id`
LIMIT 1000

Cette requête supprime progressivement les lignes par lots de 1 000, évitant ainsi les verrous de table. En incluant une pause entre les itérations de la boucle, le script minimise la charge de la base de données. Les utilisateurs ne sont pas affectés et le nettoyage peut être programmé à un moment optimal.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn