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

MS SQL Server Discussion :

Transaction READ COMMITED bloque UPDATE sur même table


Sujet :

MS SQL Server

  1. #1
    Membre habitué Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Points : 130
    Points
    130
    Par défaut Transaction READ COMMITED bloque UPDATE sur même table
    Bonjour,

    J'ai plusieurs transactions ouvertes en niveau READ COMMITED. J'aimerais faire un update de tuples différents sur la même table, et la première transaction bloque la deuxième.

    Je pensais que le niveau de blocage était au niveau ROW et pas au niveau TABLE, mais ça ne semble pas être le cas.

    Y a-t-il moyen de mettre le verrou au niveau ROW ? Est-ce une configuration de table, de base de donnée, de moteur ou de transaction ?

    Merci d'avance de votre aide !

  2. #2
    Membre habitué Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Points : 130
    Points
    130
    Par défaut
    Le blocage au niveau TABLE (ou PAGE) est uniquement pour la commande UPDATE. La commande INSERT ne bloque que les rows qu'elle insère.

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 874
    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 : 21 874
    Points : 53 048
    Points
    53 048
    Billets dans le blog
    6
    Par défaut
    Citation Envoyé par stephane.julien Voir le message
    Bonjour,

    J'ai plusieurs transactions ouvertes en niveau READ COMMITED. J'aimerais faire un update de tuples différents sur la même table, et la première transaction bloque la deuxième.
    ce qui est logique et normal dans certains cas.
    Je pensais que le niveau de blocage était au niveau ROW et pas au niveau TABLE, mais ça ne semble pas être le cas.
    table ? Non, rarement. Page le plus souvent.

    Y a-t-il moyen de mettre le verrou au niveau ROW ? Est-ce une configuration de table, de base de donnée, de moteur ou de transaction ?
    Oui, mais c'est toujours risqué. M'est avis que vos transactions sont mal écrites....
    Postez les SVP.
    Néanmoins vous pouvez imposez le type de verrous par objet avec ALTER INDEX (même sur une table)
    Ou alors par requête avec un hint du genre ROW LOCK.

    Merci d'avance de votre aide !
    A +

  4. #4
    Membre habitué Avatar de stephane.julien
    Inscrit en
    Septembre 2007
    Messages
    342
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Septembre 2007
    Messages : 342
    Points : 130
    Points
    130
    Par défaut
    Le hint du genre ROW LOCK n'étant pas sûr, j'ai testé la variante ALTER INDEX ALLOW PAGELOCK=false, et ça fonctionne.

    La manière dont j'ai écrit mes transactions ne peut être changée. Par contre, il m'arrive encore sporadiquement d'avoir des interblocages qui sont dus à la suite d'exécutions de requêtes. Je ne peux rien faire contre ceux-ci. Je les catch donc dans l'application et relance la transaction. Après 5 essais je lance une erreur d'application.

    Merci pour l'aide !

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

Discussions similaires

  1. [MySQL-5.1] UPDATE SELECT sur même table
    Par Invité dans le forum Requêtes
    Réponses: 2
    Dernier message: 02/08/2013, 10h08
  2. Trigger avec update sur même table
    Par Thig dans le forum PL/SQL
    Réponses: 7
    Dernier message: 31/08/2007, 14h45
  3. Update sur plusieurs tables
    Par yoyopi dans le forum DB2
    Réponses: 4
    Dernier message: 24/07/2006, 08h22
  4. critere de selection pr faire un UPDATE sur 1 table
    Par maxizoo dans le forum Langage SQL
    Réponses: 6
    Dernier message: 05/01/2006, 15h35
  5. update sur plusieurs tables
    Par Jean-Matt dans le forum Langage SQL
    Réponses: 14
    Dernier message: 04/01/2006, 14h30

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