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 :

Comment interpréter log de deadlock généré par sql server 2000 ?


Sujet :

MS SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut Comment interpréter log de deadlock généré par sql server 2000 ?
    Bonjour,

    depuis peu ayant des deadlock sous sql server 2000, j'ai activé le suivi détaillé des deadlock via DBCC TRACEON (3605,1204,-1) mais savez vous comment interpréter ces logs par contre ?

  2. #2
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    par exemple celui ci :

    spid4 Node:1
    spid4 PAG: 7:1:198648 CleanCnt:3 Mode: SIU Flags: 0x2
    spid4 Grant List 0::
    spid4 Owner:0x445d4160 Mode: S Flg:0x0 Ref:0 Life:00000001 SPID:110 ECID:0
    spid4 SPID: 110 ECID: 0 Statement Type: UPDATE Line #: 1
    spid4 Input Buf: RPC Event: sp_executesql;1
    spid4 Grant List 1::
    spid4 Requested By:
    spid4 ResType:LockOwner Stype:'OR' Mode: IX SPID:109 ECID:0 Ec0x32385518) Value:0x68f94080 Cost0/0)
    spid4
    spid4 Node:2
    spid4 PAG: 7:1:198648 CleanCnt:3 Mode: SIU Flags: 0x2
    spid4 Grant List 0::
    spid4 Grant List 1::
    spid4 Owner:0x67d7bd60 Mode: S Flg:0x0 Ref:0 Life:00000001 SPID:109 ECID:0
    spid4 SPID: 109 ECID: 0 Statement Type: UPDATE Line #: 1
    spid4 Input Buf: RPC Event: sp_executesql;1
    spid4 Requested By:
    spid4 ResType:LockOwner Stype:'OR' Mode: IX SPID:110 ECID:0 Ec0x2D20F518) Value:0x77b076a0 Cost0/0)
    spid4 Victim Resource Owner:
    spid4 ResType:LockOwner Stype:'OR' Mode: IX SPID:110 ECID:0 Ec0x2D20F518) Value:0x77b076a0 Cost0/0)

  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 924
    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 924
    Points : 51 726
    Points
    51 726
    Billets dans le blog
    6
    Par défaut
    SIU = Shared Intent Update (verrou d'intention de modif)
    IX = Intent eXclusif (verrou d'intention d'exclusivité)
    Les verrous d'intention sont des verrous transitoites pour passer d'un mode à l'autre (Shared vers eXclusif par exemple)
    PAG = adresse de la page (n°base, N° fichier, N° page dans le fichier) 7:1:198648
    SPID = n° de processus 109 et 110 se sont bloqués.
    Le Victim Resource Owner: est celui qui a été tué.

    Un DBCC PAGE sur 1:198648 dans la base considérée devrait vous donner l'objet (table ou index) puis si c'est un index, la table...

    A +

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Un peu plus de détails : pour voir les résultats s'afficher dans la console d'Enterprise Manager, exécutez DBCC TRACEON (3604).

    Une fois ce drapeau de trace activé, vous pouvez exécuter DBCC PAGE (7, 1, 198648, 3)

    Dans le résultat que vous allez voir apparaitre, il devrait y avoir un objectid et un indexid, que vous devriez pouvoir retrouver dans la table système sys.sysindexes (respectivement colonnes id and indid).

    Si vous ne les trouvez pas, donnez nous la sortie de l'exécution de l'instruction DBCC PAGE.

    @++

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Ok merci je vais essayer ça et vous tenir au courant, j'ai pu exécuter le DBCC TRACEON (3604) mais je n'ai pas les droits pour le DBCC PAGE, je vais demander à notre prestataire.
    Les résultats du DBCC TRACEON (3604) apportent plus de détails ?

    Par contre ce qui risque d'être compliqué à résoudre, c'est que dans logs, les noeuds diffèrent, ce n'est pas toujours PAG: 7:1:198648

  6. #6
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Autre petite question, dans le DBCC PAGE (7, 1, 198648, 3) ; le 3 fait référence à CleanCnt:3 dans le log ou pas du tout ?

  7. #7
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Le 3 est une option de formatage d'affichage de la commande DBCC PAGE.

    3 signifie que tu auras un affichage de l'entête de la page + détail par ligne de données

    ++

  8. #8
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    merci mikedavem

    sinon j'ai dans sysindexes avec l'id de l'objet et de l'index (id index à 0) obtenu avec le DBCC PAGE, le nom de la table concernée via la colonne name, après y a-t-il d'autres infos intéressantes que je peux avoir ?

    le résultat DBCC Page :

    BUFFER:
    -------

    BUF @0x010E3580
    ---------------
    bpage = 0x4CD1C000 bhash = 0x00000000 bpageno = (1:228481)
    bdbid = 7 breferences = 1 bstat = 0x9
    bspin = 0 bnext = 0x00000000

    PAGE HEADER:
    ------------

    Page @0x4CD1C000
    ----------------
    m_pageId = (1:228481) m_headerVersion = 1 m_type = 1
    m_typeFlagBits = 0x0 m_level = 0 m_flagBits = 0x8000
    m_objId = 217155919 m_indexId = 0 m_prevPage = (0:0)
    m_nextPage = (0:0) pminlen = 44 m_slotCnt = 74
    m_freeCnt = 335 m_freeData = 7997 m_reservedCnt = 0
    m_lsn = (40060:5010:537) m_xactReserved = 0 m_xdesId = (0:0)
    m_ghostRecCnt = 0 m_tornBits = 621875329

    Allocation Status
    -----------------
    GAM (1:2) = ALLOCATED SGAM (1:3) = NOT ALLOCATED
    PFS (1:226464) = 0x44 ALLOCATED 100_PCT_FULL DIFF (1:6) = NOT CHANGED
    ML (1:7) = NOT MIN_LOGGED

  9. #9
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Personne pour me répondre ?

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 924
    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 924
    Points : 51 726
    Points
    51 726
    Billets dans le blog
    6
    Par défaut
    Il faudrait maintenant savoir quels sont les transactions qui ont générés le verrou mortel, les tables en jeu (structure) et l'indexation de ces tables.

    A +

  11. #11
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Dans input buf la requête retournée est un update, il n'y a qu'une table concernée et aucun index sur cette table. Après je ne sais pas s'il y a d'autres infos pertinentes à prendre.
    J'ai remarqué qu'en supprimant d'anciennes données dans cette table (elle était à 500 000 lignes, maintenant à 4000 lignes) ; plus de deadlock. Pourtant 500 000 me parait peu comme valeur pour envisager un partitionnement non ? serait ce ma version de sql serveur 2000 peut-être ?

  12. #12
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 924
    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 924
    Points : 51 726
    Points
    51 726
    Billets dans le blog
    6
    Par défaut
    Le nombre de ligne n'a pas un lien direct avec la survenance d'un deadlock.

    En revanche il a un lien indirect....

    Statistiquement la possibilité d'un deadlock croit avec la durée du verrouillage. Plus la quantité de données à verrouiller est importante, plus la durée du verrou augmente, et plus la possibilité d'un deadlock apparait.

    Enfin sachez que sans transaction EXPLICITE, pas de deadlock...

    Postez le DDL de votre table AVEC SES INDEX et la requête UPDATE.
    Sans doute avec un bon index minimiserons nous la possibilité de survenance d'un verrous mortel.

    A +

  13. #13
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Puis je vous envoyer les données en MP ?

  14. #14
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 924
    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 924
    Points : 51 726
    Points
    51 726
    Billets dans le blog
    6
    Par défaut
    Je suis trop occupé... Je donne un cours sur SQL en ce moment et intervient aux poses ou lorsque es stagiaires travaillent !

    A +

  15. #15
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    On ne peut pas avoir ces infos sur le forum ? Ca éviterait à SQLPro de devoir s'en occuper à la pause de ses formations

    ++

  16. #16
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Arf non désolé je ne préfère pas

  17. #17
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    j'ai dans sysindexes avec l'id de l'objet et de l'index (id index à 0) obtenu avec le DBCC PAGE
    Ceci signifie que la table sous-jacente n'est pas indexée : l'index cluster a toujours l'id 1, et les index non-cluster un id plus grand que 1.
    Donc de toute évidence, l'UPDATE n'est pas supporté par un index

    @++

Discussions similaires

  1. Comment cliquer sur des clips générés par actionscript
    Par ar vuzhugenn dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 04/01/2008, 12h02
  2. Réponses: 4
    Dernier message: 15/01/2007, 19h53
  3. comment creer un plan de maintenance sur sql server 2000
    Par sorel dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/12/2005, 16h03
  4. fonction utilisateur non reconue par sql server 2000
    Par ouedmouss dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 05/09/2005, 08h46
  5. Comment obtenir la description des tables par SQL
    Par rcastaldi dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 15/03/2004, 15h13

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