Maison > Article > base de données > Comment supprimer efficacement des millions de lignes MySQL sans perturber les opérations du site ?
Supprimer efficacement des millions de lignes MySQL
La suppression de quantités importantes de données d'une table MySQL peut poser des problèmes en raison de problèmes potentiels de verrouillage de table. Cet article examine un scénario courant dans lequel un grand nombre de lignes de données en double doivent être supprimées sans perturber les opérations du site.
Défis
Le principal obstacle dans cette situation est la longue verrouillage de table imposé lors de l'exécution d'une seule requête pour supprimer des millions de lignes. Cela peut interrompre toutes les autres opérations impliquant la table, entraînant une instabilité du site.
Solutions potentielles
Pour atténuer le problème de verrouillage, deux approches principales sont disponibles :
Solution optimisée
Pour des performances optimales, une solution plus efficace La solution consiste à utiliser une approche de suppression incrémentielle avec une boucle et une clause limite. Cela implique les étapes suivantes :
DELETE FROM `table` WHERE (whatever criteria) ORDER BY `id` LIMIT 1000
La requête est itérée jusqu'à ce que plus aucune ligne ne soit affectée, avec une brève pause entre les itérations pour éviter de surcharger la base de données. Cette approche supprime efficacement les données par lots gérables tout en permettant à d'autres requêtes de s'exécuter simultanément, réduisant ainsi à la fois le temps de verrouillage de la table et le temps d'exécution global.
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!