Maison > base de données > tutoriel mysql > le corps du texte

Comment supprimer des millions de lignes MySQL sans temps d'arrêt ?

Linda Hamilton
Libérer: 2024-11-07 11:11:02
original
303 Les gens l'ont consulté

How to Delete Millions of MySQL Rows Without Downtime?

Comment supprimer des millions de lignes MySQL sans temps d'arrêt

Face à un bug qui entraînait des millions de lignes en double, trouver une suppression une stratégie qui minimise les temps d'arrêt est cruciale.

Une option consiste à exécuter de nombreuses requêtes de suppression plus petites en boucle. Cependant, cette approche peut surcharger la base de données et allonger le processus de suppression.

Une autre option consiste à renommer la table existante, à en créer une nouvelle vide, à effectuer un nettoyage sur la table renommée, puis à fusionner les données dans la table renommée. tableau original. Bien que cette méthode offre une interruption minimale, elle s'accompagne de défis logistiques, notamment une perte potentielle de données et la nécessité d'une fusion méticuleuse des données.

Une solution plus efficace consiste à exécuter la requête suivante en boucle, avec une courte période de veille. entre les itérations :

DELETE FROM `table`
WHERE (whatever criteria)
ORDER BY `id`
LIMIT 1000
Copier après la connexion

En limitant la suppression à 1000 lignes à la fois et en ajoutant un court intervalle de veille, cette technique permet à d'autres requêtes de s'entrelacer et empêche le verrouillage de la table. Au fur et à mesure des itérations, le nombre de lignes affectées diminuera progressivement jusqu'à ce qu'il n'en reste plus aucune.

Cette approche allie efficacité et temps d'arrêt minimal, ce qui en fait un choix approprié pour supprimer de gros volumes de lignes sans perturber les fonctionnalités du site ou l'expérience utilisateur.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!