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

Administration Oracle Discussion :

Row lock contention, Buffer busy wait etc


Sujet :

Administration Oracle

  1. #1
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut Row lock contention, Buffer busy wait etc
    Salut tout le monde,

    Sur une base j'ai plusieurs sessions bloquées à cause d'un Update qui a créé un wait de type "Row Lock Contention".

    Ce que je comprends c'est que la session 1 fait un Update sur la ligne 100 de ma table ET oublie de faire un Commit ou Rollback donc le lock perdure et bloque les autres sessions.
    Là où je me dis qu'il y a un pb c'est que si les autres sessions sont bloquées par ce lock c'est qu'elles veulent modifier la même ligne, ce qui me semble bizarre : un user bosse sur un dossier, pas sur celui de son voisin.
    Mais bon, passons, ma question n'est pas là.

    Ma question est : si une autre session voulait faire un Update sur la ligne 101 et que celle-ci se trouve dans le même bloc de données que la ligne 100, cette session doit attendre à cause du wait Buffer busy wait, OK? En effet la première session a pris un latch sur la Cache Buffer Chain dont un des Buffer Headers pointe vers le bloc. Et tant que la session 1 n'a pas terminé son job, le bloc reste inaccessible en modification à toute autre session.

    Donc en résumé :
    - session 1 fait un update ligne 100, session 2 fait un update ligne 101 dans un autre bloc appartenant à une autre CBC (Cache Buffer Chain) : aucun problème, pas de "Buffer Busy Wait", un lock posé ligne 100 et ligne 101, un latche posé sur chaque CBC .
    - session 1 fait un update ligne 100, session 2 fait un update ligne 101 dans un autre bloc appartenant à la même CBC : problème, wait "cache buffer chain", un lock posé ligne 100, un latche posé sur la CBC.
    - session 1 fait un update ligne 100, session 2 fait un update ligne 101 dans le même bloc (donc appartenant à la même CBC) : problème, "Buffer Busy Wait", la session 2 attend et un lock est posé par la session 1 sur la ligne 100.

    C'est bien ça?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  2. #2
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Les latch ne durent pas pour toute la session. Ce sont des verrous très courts pour des accès en mémoire. Juste le temps de lire ou modifier, et jamais au-delà du user-call. Les verrous ligne sont pour toutes la transaction.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

Discussions similaires

  1. problème de enq: TX - row lock contention
    Par fred_04510 dans le forum Administration
    Réponses: 5
    Dernier message: 03/03/2010, 20h24
  2. buffer busy wait
    Par whisper dans le forum Administration
    Réponses: 2
    Dernier message: 18/02/2010, 12h58
  3. Lock conflict on no wait transaction
    Par VLDG dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 15/09/2007, 12h15
  4. Lock Conflit on no wait Trasaction?
    Par touhami dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 26/11/2005, 10h52
  5. Row lock
    Par cassandra dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 09/04/2003, 16h07

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