|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 18 ![]() |
Bonjour,
Possesseur d'un site d'e-commerce existe-t-il un script pour supprimer dans les tables les plus lourdes comme connections, connections pages, connections sources, etc jusqu'à une date bien définie. Je désire supprimer les données par exemple au 31 12 2010 Je ne connais pas le fonctionnement de mysql et recherche une personne qui pourrait m'aider en sens afin d'alléger le poids de ma base de données. Il s'agit d'un petit site 250 références et cette opération serait nécessaire 1 à 2 fois par an D'avance je vous remercie pour vos conseils et tous mes meilleurs voeux pour l'année 2012 |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Inscription : mars 2005 Messages : 577 ![]() |
Bonjour,
En fait il s'agit plus ici d'un script système que d'un script lié à MySQL. Tu commences par écrire ton script en SQL et tu le sauvegarde dans un fichier. Pour exécuter ton script tu dois lancer un truc du genre: Code :
mysql --user=user_name --password=your_password db_name < script.sql
Si ton serveur fonctionne sous Linux (ou Unix), alors tu peut faire exécuter ton script SQL par un utilitaire appelé crontab. Il permet l'exécution d'une commande donnée de façon périodique: http://fr.wikipedia.org/wiki/Crontab Si tu le serveur fonctionne sous windows je pense que tu peux passer par le scheduler: http://windows.microsoft.com/en-US/w...chedule-a-task
__________________
Copier c'est copier; voler c'est vendre un CD une vingtaine d'euros! Code C :
|
||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Eric DureuilDéveloppeur informatique Inscription : avril 2011 Messages : 874 ![]() |
le "cron" est, en effet, ce qu'il te faut...
je suppose que tu es en hébergement mutualisé... donc il faut d'abord regard dans ton interface de gestion si tu as accès au "cron" si non alors tu appelles ton hébergeur pour savoir si la fonction est disponible... là tu crées ton script... si tu ne peux pas alors l'idée serait de fabriquer une procédure stockée, que tu peux lancer depuis un petit script php (à ne pas exposer bien-sur), et à qui tu passes en paramètre la date limite que tu veux garder... tu peux, quoi qu'il en soit, faire une procédure stockée qui récupère automatique ment l'année en cours, et fait ton traitement à l'année-1 ou -2 je te conseille de tester avant sur une version d'essai de tes tables... ça évite de pleurer... plutôt que de détruire ces données, je te conseille de les stocker plutôt dans une bd secondaire avant de le supprimer dans la base principale... ça te permet de faire un mécanisme d'archivage...
__________________
Eric Dureuil, développeur web, c/c++, java indépendant soyons ![]() pensez à mettre et
|
|
|
00
|
|
|
#4 | |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 18 ![]() |
Citation:
|
|
|
|
00
|
|
|
#5 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 655 ![]() |
Bonjour,
Côté Sql regardez du côté de la clause DELETE : http://sqlpro.developpez.com/cours/sqlaz/dml/#LIII Et vu que votre condition porte sur une date, il faudra surement que vous mettiez le nez dans la doc de MySql pour connaitre un peu les opérations sur les dates : http://dev.mysql.com/doc/refman/5.5/...functions.html Bon déjà un bon début. Ensuite une fois que vous vous serez un peu amusé avec tout ça, il va falloire que vous identifiez la / les colonnes de vos différentes tables qui pourraient vous donner l'information necessaire pour savoir si uen ligne est postérieur au 31 12 2010 ou pas. A partir de là vous pourrez construire vos différentes requêtes de purge. |
|
|
00
|
|
|
#6 | ||
|
Invité de passage
![]() Inscription : mai 2007 Messages : 18 ![]() |
Bonjour,
J'ai trouvé ce code qui fonctionne bien sur la table concernée mais pas sur les autres tables, peut-être faut-il effectuer cette requête dans l'ordre des tables ps_connections ps_connections_page ps_connections_source etc Voici le code fonctionnant uniquement sur la table ps_connections_page Code :
Bien cordialement |
||
|
|
00
|
|
|
#7 |
![]() ![]() |
Le nom de tes table laisse à penser que la table principale est ps_connections et que les deux autres ont une clé étrangère référençant l'identifiant de la connexion.
Si c'est le cas, si les tables utilisent le moteur InnoDB et que tu as programmé les clés étrangères avec la contrainte d'intégrité ON DELETE CASCADE, alors la suppression dans ps_connections supprimera automatiquement les lignes correspondantes dans les deux autres tables. Si ceci n'est pas possible, il faut faire la requête sur chaque table.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#8 | |
|
Invité de passage
![]() Inscription : mai 2007 Messages : 18 ![]() |
Citation:
J'ai testé en local et aucun problème pour les 3 tables citées plus haut, je vais pouvoir alléger le poids de ma BDD. Merci pour votre réponse et bonne soirée |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com