IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Accès à une table pendant sa mise à jour


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2012
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mars 2012
    Messages : 52
    Points : 31
    Points
    31
    Par défaut Accès à une table pendant sa mise à jour
    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

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    Normalement, il suffit de faire le DELETE et l'INSERT dans la même transaction. Tant que tu n'as pas fait le COMMIT, tes suppressions sont ainsi invisibles pour les autres utilisateurs. Ça suppose évidemment que tu utilises un moteur de stockage transactionnel (InnoDB) et que tu évites le TRUNCATE, qui entraînera un COMMIT implicite.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

Discussions similaires

  1. Disponibilité d'une base pendant la mise-à-jour
    Par Invité dans le forum Optimisations
    Réponses: 8
    Dernier message: 11/01/2015, 17h52
  2. [MySQL] Copie d'une table à l'autre + mise a jour d'un champ dans la table d'arrivée
    Par reventlov dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/06/2012, 15h10
  3. Réponses: 15
    Dernier message: 05/02/2012, 19h31
  4. [AC-2002] Mise à jour automatique d'une table à la date du jour
    Par gandalf20000000 dans le forum Modélisation
    Réponses: 1
    Dernier message: 19/12/2009, 14h11
  5. Réponses: 13
    Dernier message: 25/10/2008, 10h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo