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

SQL Procédural MySQL Discussion :

gérer les accès concurrents


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Nillak
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 138
    Par défaut gérer les accès concurrents
    Bonjour à vous tous et puis meilleurs voeux ,
    une question que je me pose depuis quelques jours maintenant et à laquelle je n’arrive pas à répondre correctement.

    Tout d’abord mon problème :
    J’ai une base de donnée MySQL que plusieurs utilisateurs peuvent consulter et modifier.
    Or, dans mon programme une modification requiert plusieurs requêtes SQL …
    d’où: comment éviter qu’un deuxième utilisateur (ou plus) ait accès aux champs en cours de modification par le groupe de requêtes ?
    En d’autres termes j’aimerais que les groupes de requêtes se succèdent et qu’elles ne se chevauchent pas
    J’espère que je suis assez clair . Il me semble que cela concerne les accès concurrents à des champs.

    Voici les quelques solutions que j’ai trouvées et qu’il va falloir que je creuse, mais je voudrais savoir si je prend la bonne voie :
    - L’utilisation des transactions (SET TRANSACTION …) en verrouillant les tables concernées (LOCK TABLE …) avec le niveau ACCESS EXCLUSIVE.
    Mais (sauf erreur de ma part) cette approche implique l’utilisation des tables innoDB qui sont moins performantes en termes d’accès que les myISAM, ainsi qu’un verrou sur la totalité de la table ce qui peut être gênant si les modifications ne concernent qu’une très petite partie de la table et que donc les autres utilisateurs ne peuvent pas intervenir sur le reste de celle-ci
    - L’utilisation d’un SELECT … FOR UPDATE ; cette requête bloque bien que les lignes sollicitées mais ne concerne pas un groupe de requêtes.

    Bref, je suis pour l’instant dans la recherche des meilleurs compromis pour ce type de problème. Il me semble que l'utilisation des LOCK TABLE (sans l'utilisation des TRANSACTIONS) et sur des tables utilisant le moteur myISAM est une voie intéressante ... mais j'en suis pas sûr.
    Pourriez-vous svp me dire si je prend le bon train et me donner quelques informations bien distillées

    Merci d’avance !

  2. #2
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Set transaction est bien utilisé par les tables InnoDB. Les tables InnoDB, gérant les transactions sont moins rapides en effet que les tables myIsam qui ne gèrent pas tous ces aspects. (Logique )

    Mais les fonctions LOCK TABLE peuvent être utilisés avec les tables MyIsam.

    A mon avis , le LOCK est une bonne solution.
    Vous lockez
    Vous lancez vos requêtes
    Vous délockez

    Mais attention Pendant le verrou, les utilisateurs concurrents auront un message d'erreur de type "Table verrouillée" Il faut donc le gérer
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    Membre confirmé Avatar de Nillak
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 138
    Par défaut
    Ok, toutefois il me semblait que les utilisateurs étaient en attente le temps que le verrou soit levé. De toute façon je vais tester ça ... merci pour avoir répondu aussi rapidement

    Je marquerais ce post comme résolu plus tard dans la semaine ... on sait jamais si je trouve des infos complémentaires

    Merci pour votre réponse
    et bon week end !

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

Discussions similaires

  1. Gérer les accès aux fichiers
    Par skyangel dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 13/05/2008, 13h00
  2. Gérer les accès à la BD : contrôle via php
    Par amarcil dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/04/2008, 21h12
  3. Question sur les accés concurrents
    Par bannik dans le forum Autres
    Réponses: 1
    Dernier message: 08/02/2008, 17h41
  4. comment gérer les accès concurents ?
    Par jejerome dans le forum Langage
    Réponses: 7
    Dernier message: 14/04/2006, 23h44
  5. Gérer les accès concurrents
    Par Royd938 dans le forum Langage
    Réponses: 1
    Dernier message: 19/10/2005, 11h27

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