Question

Une fois par jour, je dois mettre à jour une table MySQL avec un nouveau fichier téléchargé sur le Net via FTP, puis mysqlimport. Cependant, je veux que mon site pour continuer à fonctionner sans problème pendant l'opération de mysqlimport, ce qui prend un certain temps (il est d'une grande table). Quelle serait une bonne façon d'assurer que les utilisateurs ne pas attendre l'importation pour terminer? Je pense à l'importation à une table temporaire, puis le renommer. Est-ce un bon plan?

Était-ce utile?

La solution

Un fait peu connu est que vous pouvez concaténer plus d'une instruction de changement de nom dans une base MySQL et exécuterez tous le nom change atomiquement.

create table newtable like oldtable;
insert into newtable .......
rename table oldtable to deleteme, newtable to oldtable;
drop table deleteme;

Le tableau de changement de nom bloquer les lecteurs (en fait, il bloque toute résolution du nom), mais doit être une opération très rapide.

Autres conseils

Si c'est un cas d'une mise à jour incrémentale, vous pouvez simplement accélérer l'insertion de nouvelles données via Cron / ordonnancement.

Charger XYZ enregistre chaque minute, voir si la mise à jour précédente est terminée, faire une lockfile, insérer retardée, rincer et répéter.

Si vous voulez obtenir réel intelligent à ce sujet, ont le script de mise à jour vérifier la charge du serveur lors de l'exécution et ajuster le nombre d'importations en conséquence.

Cela entraînera de nouvelles données à apparaître dans les lots, mais vous permettra de garder le site en cours d'exécution pendant qu'il est mis à jour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top