bobdeo Posté 9 Mai 2007 Posté 9 Mai 2007 Bonjour, Chaque jour, à heure fixe, j'effectue automatiquement le traitement suivant : 1- Vidage de la table A 2- Import d'environ 50Mo de données dans la table A Ce traitement dure environ 3 minutes ce qui rend le site indisponible pendant cette durée. Qu'elle est la méthode à suivre pour éviter ça ? J'en pensé à 1- effectuer l'import dans une table temporaire (table 2- suppression de la table A 3- renommer table B en table A... Qu'en pensez-vous ? Merci pour votre aide.
destroyedlolo Posté 9 Mai 2007 Posté 9 Mai 2007 Perso, j'utilise une vue qui pointe alternativement sur la table A ou B. Ceci dit, j'utilise PostGreSQL ...
f_trt Posté 9 Mai 2007 Posté 9 Mai 2007 Je crois que ton 1 2 3 est pas mal. Tu aurais aussi la solution suivante : Mettre dans un fichier de config le nom de la table. Tu ferais alors 1 import dans table A ou B en fonction de celle que tu dois mettre à jour 2 changement du pointage vers A ou B a jour dans ton fichier de config Tu pourrais presque automatiser cela imagine que tu fasses un test dans ton fichier config pour savoir quelle table est le plus à jour et tu utilises celle là. Tu n'as plus qu'a t'occuper de l'import euh par contre il faut faire ce test que toute les 5 mn on va dire pour pas te retrouver en train d'utiliser une table en cours de mise à jour.
destroyedlolo Posté 9 Mai 2007 Posté 9 Mai 2007 perso, c'est du MySQL... Il serait quant meme etonnant que MySQL ne connaisse pas les Views Par contre, beaucoup de SGBD ne permettent pas d'updater une views.
bobdeo Posté 9 Mai 2007 Auteur Posté 9 Mai 2007 (modifié) Pas mal la solution avec le fichier de config... Je peux changer le pointage après le traitement. En détail, ça donne : - Voir quelle table est active : si A utliser B, si B utiliser A - vider puis remplir la table sélectionnée - Changer la table active : si A utliser B, si B utiliser A et c'est réglé ;-) Par contre, la mise en place va être chiante : tous mes scripts pointent vers la même table... à moins que l'aiguillage se fasse au niveau du choix de la base... UPDATE 15:04 -> ok, je pars sur un changement de nom table à la fin du traitement... Modifié 9 Mai 2007 par bobdeo
Galeenet Posté 9 Mai 2007 Posté 9 Mai 2007 J'aurais fait une mise à jour décalée : la table A est en cours d'utilisation. A coté tu as une table A_origine, avec les données mises à jour. Tu lockes A, tu renommes A en A_old, tu renommes A_origine en A, et tu unlockes. Ensuite tu peux mettre à jour à nouveau
bobdeo Posté 9 Mai 2007 Auteur Posté 9 Mai 2007 Question surement très bête : comment tu lockes / unlockes ? pourquoi ? cette manip ? Merci
Galeenet Posté 10 Mai 2007 Posté 10 Mai 2007 LOCK TABLE, UNLOCK TABLE... la manip ? pour "bloquer" les mises à jour de la table pendant le renommage.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant