Supprimer une table de plusieurs millions d'enregistrement
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016
-
15 déc. 2014 à 12:13
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016
-
20 déc. 2014 à 18:33
Bonjour,
j'avais lancé un script (ou il y avait une erreur que malheureusement j'ai constaté un peu tard) du coup ça a généré plusieurs millions d'enregistrements.
Le soucis maintenant c'est que je n'arrive pas à supprimer cette table ni à partir de mysql ni par script car apparement le temps d'execution est trop long, j'ai essayé meme de supprimer des enrengistrement par lots meme de 30 mais sans resultat.
Si vous avez des propositions je suis preneur.
mpmp93
Messages postés6651Date d'inscriptionmercredi 13 avril 2011StatutMembreDernière intervention28 septembre 20154 15 déc. 2014 à 18:13
Bonjour,
Pour le DELETE, vous mettez quoi comme condition?
Si la condition porte sur un champ non indexé, ça explique les lenteurs.
Indexez le champ sur lequel vous faites la condition WHERE, par exemple, si c'est date_creation, vous indexez ce champ, ensuite vous faites votre DELETE:
DELETE * FROM ma_table WHERE date_creation = "2014-12-06"
sp40
Messages postés1284Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 17 déc. 2014 à 11:54
Bonjour,
Pour quoi ne pas créer une table temporaire de même structure, dans laquelle tu insères les enregistrements valides de ta table d'origine ?
Tu droppes ensuite la table d'origine, la recrée, et y réinsère les enregistrements que tu auras gardé dans ta table temporaire (que tu droppes ensuite à son tour)
Vous n’avez pas trouvé la réponse que vous recherchez ?
alone06
Messages postés115Date d'inscriptionmardi 9 novembre 2010StatutMembreDernière intervention18 mai 2016 17 déc. 2014 à 18:07
le truc c'est que le drop ne marche plus ni trancate d'ailleurs vue que la table fait presque un Go alors le temps d'execution est très long et par lasuite stoppé par le serveur.
Aucune opération ne marche.
sp40
Messages postés1284Date d'inscriptionmardi 28 octobre 2003StatutContributeurDernière intervention 3 juillet 201515 18 déc. 2014 à 09:11
C'est étonnant... et inquiétant de la part de mySQL...
Sinon, refais une nouvelle base ?
Est-ce que le select sur les enregistrements valables fonctionne ?
mpmp93
Messages postés6651Date d'inscriptionmercredi 13 avril 2011StatutMembreDernière intervention28 septembre 20154 20 déc. 2014 à 11:06
Bonjour,
Bon, ben moi j'ai suggéré quelque chose, mais pas de réponse.....
Donc, je répète, indexer sur le champ sur lequel vous faite des 'WHERE.....'
J'ai géré des bases en mySQL de plus de 1go, et j'ai "bluffé" des pros qui avaient oublié ce détail.... Résultat, des requètes de 10 minutes exécutées en 10 secondes!!!
A vous de persister dans le bricolage ou écouter l'avis de pros....