Aller au contenu

Sujets conseillés

Posté

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 B)

2- suppression de la table A

3- renommer table B en table A...

Qu'en pensez-vous ?

Merci pour votre aide.

Posté

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.

Posté
perso, c'est du MySQL...

Il serait quant meme etonnant que MySQL ne connaisse pas les Views :wacko:

Par contre, beaucoup de SGBD ne permettent pas d'updater une views.

Posté (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é par bobdeo
Posté

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 :)

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...