Bonjour,
Je possède une table que je dois mettre à jour toutes les 15 minutes.
Pendant la phase de mise à jour:
- Je prépare l'ensemble des données à inscrire en table
- Je vide la table
- J'ajoute l'ensemble des données que j'ai préparées
La problématique est qu'un client peut faire un SELECT juste au moment entre la suppression des données de ma table et l'ajout des nouvelles données.
Connaissez vous une méthode pour contourner ce problème sans imposer un lock (je ne veux bloquer aucune requête...)?
Pour le moment, je pense créer 2 tables de données (table A et table B) et une table C qui m'indique sur quelle table doit pointer mes selects...
Ce qui implique que pour tout select sur mes données, je devrais d'abord faire une requete sur la table C pour savoir sur quelle table faire mon select (table A ou B)
En gros, cela donnerait cela:
table C m'indique table A (je peux donc mettre à jour la table B à ma guise puisque mes clients pointent sur la table A...)
A la fin de la mise à jour de la table B, je fais un update de ma table C pour dire que ma table active est maintenant la B...
A la prochaine mise à jour, je pourrais modifier à ma guise la table A puis de nouveau changer la table C pour dire que maintenant ma table A est active...
etc...
C'est un peu archaïque mais je suis sur qu'il doit exister des fonctions intégrées dans mysql ou mariadb qui doivent pouvoir gérer ce genre de problématique...
Merci pour vos retours!
l
Partager