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 :

Concurrence et entrelacement


Sujet :

Requêtes MySQL

  1. #1
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut Concurrence et entrelacement
    Bonjour,

    J'ai un gros doute concernant un probleme potentiel de concurrence.

    J'ai une table ("JOB2DO") de type standard (TYPE=MyISAM) sur laquelle plusieurs applis
    font des acces.

    L'idee generale est qu'une appli marque toute les lignes non attribuees avec son ID propre
    puis traite les lignes qu'elle a marquee une par une.
    Sachant que je ne fais aucun verouillage explicite sur cette table, y a t'il un risque qu'une ligne soit doublement traitee?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE JOB2DO SET WORKER=WorkerID WHERE WORKER='NOBODY';
    SELECT * FROM JOB2DO WHERE WORKER=WorkerID;
    Il me semble que oui dans le cas ou deux transactions s'entrelacent, mais je ne voudrais pas alourdir les applis sans raison avec des locks.

    merci,

    JLB
    S'il n'y a pas de solutions, il n'y a pas de problème.

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Bonjour,

    Le risque est d'autant plus fort qu'en MyISAM, il n'y a pas de gestion des transactions (ce qui est par contre le cas en InnoDB). Et donc pas de gestion de concurrence non plus.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Salut,

    MyISAM verrouille la table en écriture lors de tout UPDATE ou DELETE. Cf http://www.developpez.net/forums/showthread.php?t=50705

    Si ta question concernait un "entrelacement" au cours de l'exécution du UPDATE il n'y a donc aucun risque. En revanche un autre ordre SQL peut bien sûr venir s'insérer entre le UPDATE et le SELECT.
    Pensez au bouton

  4. #4
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Bon mes doutes sont leves, merci!
    Je voulais juste m'assurer que la requete "UPDATE" etait ininterruptible par une autre requete, ce qui aurait pu me poser qq problemes de coherance.

    merci pour vos reponses rapides.
    S'il n'y a pas de solutions, il n'y a pas de problème.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Db Express : un concurrent d'ADO ?
    Par Bruno75 dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/12/2003, 09h23
  2. [EJB] Accès concurrents à la base de données
    Par cameleon2002 dans le forum Java EE
    Réponses: 10
    Dernier message: 23/09/2003, 11h31

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