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 :

INSERT / DELETE Concurrents


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Par défaut INSERT / DELETE Concurrents
    Salut,

    J'essaie de résoudre des problèmes de concurrence sur mon application. J'ai identifié un cas que je n'arrive pas à résoudre.
    J'utilise le moteur INNODB (testé sur MySQL 5.5 et MariaDB 5.5)
    Les transactions sont en READ COMMITED.

    Voici mon scenario :
    1) Je crée une table T avec 1 colonne 'id'

    2) J'ouvre une transaction et j’exécute
    INSERT INTO T (`id`) VALUES (1);

    3) J'ouvre une autre transaction et j'effectue :
    DELETE FROM T WHERE id in (3,4,5,6);
    => Cette requête est bloquée en attente d'obtention d'un verrou .
    Si j'éxécute "delete from T where id in (3,4)" ou "delete from T where id i=3" ca marche bien.


    SHOW ENGINE INNODB STATUS me donne :

    ------- TRX HAS BEEN WAITING 10 SEC FOR THIS LOCK TO BE GRANTED:
    RECORD LOCKS space id 0 page no 3776 n bits 72 index `PRIMARY` of table T trx id 171E2D lock_mode X locks rec but not gap waiting
    Record lock, heap no 3 PHYSICAL RECORD: n_fields 3; compact format; info bits 0
    Des idées ?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 009
    Billets dans le blog
    6
    Par défaut
    C'est normal : MySQL est l'un des plus mauvais SGBDR et particulièrement sur le plan de la concurrence....
    Avec vos 4 ID il considère plus simple de bloquer toute la table que de mettre un seul verrou par ligne potentielle.
    Avec deux il fait l'effort de bloquer ligne à ligne, comme avec 1 seul ID.

    A lire sur MySQL : http://blog.developpez.com/sqlpro/p9...oudre_aux_yeux

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Candidat au Club
    Inscrit en
    Février 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 2
    Par défaut
    Merci de votre réponse.
    Effectivement, MySQL gère trés mal le cas que je décris.
    J'ai fait le même test sur PostgreSQL et il fonctionne très bien.

    On va peut être devoir réfléchir à une migration ....

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/01/2007, 16h44
  2. ADO.NET INSERT DELETE UPDATE refresh des composants graphic
    Par jeriko dans le forum Accès aux données
    Réponses: 5
    Dernier message: 15/01/2007, 16h17
  3. [ODBC] Faire une requête INSERT, DELETE, UPDATE
    Par avogadro dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/09/2006, 12h35
  4. événement sur INSERT, DELETE, UPDATE
    Par papouAlain dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/12/2004, 16h40
  5. Evenement sur UPDATE, INSERT, DELETE
    Par papouAlain dans le forum Langage SQL
    Réponses: 6
    Dernier message: 23/12/2004, 15h58

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