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 SQL Server Discussion :

DeadLock - Lecture des traces


Sujet :

Administration SQL Server

  1. #1
    Membre éclairé Avatar de crashyear
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Janvier 2006
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 267
    Par défaut DeadLock - Lecture des traces
    Bonjour,

    Je souhaiterais savoir si je lis correctement la trace ci-dessous et je voudrais plus de détail sur les raisons de ce lock, svp ?
    Nom : TraceSQL_InterfaceCRM.PNG
Affichages : 249
Taille : 120,8 Ko

    Je vois que le process 834 (un ordre UPDATE) a été locké par le process 819 (SELECT).
    Donc, j'aimerais savoir s'il est possible d'identifier d'ou provient l'ordre SELCT qui a posé un verrou ?
    Enfin, j'amerais savoir s'il est possible d'empecher ce verrouillage ?
    Merci d'avance.

    Contenu fichier .xdl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    <deadlock-list>
     <deadlock victim="process5c94e08">
      <process-list>
       <process id="process5c94e08" taskpriority="0" logused="0" waitresource="PAGE: 15:1:1704891" waittime="1346" ownerId="43285027" transactionname="UPDATE" 
       lasttranstarted="2015-12-02T02:15:55.480" XDES="0x9fde51970" lockMode="IX" schedulerid="23" kpid="2880" status="suspended" spid="834" sbid="0" 
       ecid="0" priority="0" trancount="2" lastbatchstarted="2015-12-02T02:15:55.480" lastbatchcompleted="2015-12-02T02:15:55.480" 
       clientapp="SSIS-Package-{719B6DFB-47D0-4497-A0BA-475CEB08BC7F}DGW2K841.CRM_User.CRM" 
       hostname="DGW2K861" hostpid="6700" 
       loginname="CRM_User" isolationlevel="read committed (2)" xactid="43285027" currentdb="15" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
        <executionStack>
         <frame procname="adhoc" line="1" stmtstart="1238" sqlhandle="0x0200000035d0800159ffd38f2bcae7bb00ff9fb3d2854558">
    UPDATE [TABLE3]
       SET 
          [T3_LIB] = @P1
          ,[T3_DESC_1] = @P2
          ,[T3_OUT] = @P3
          ,[T3_CHECK1] = @P4
          ,[T3_COMP1] = @P5
          ,[T3_COMP2] = @P6
          ,[T3_COMP3] = @P7
          ,[T3_COMP4] = @P8
          ,[T3_COMP5] = @P9
          ,[T3_COMP6] = @P10
          ,[T3_COMP7] = @P11
          ,[T3_COMP8] = @P12
          ,[T3_COMP9] = @P13
          ,[T3_COMP10] = @P14
          ,[T3_COMP11] = @P15
          ,[T3_COMP12] = @P16
          ,[T3_COMP13] = @P17
          ,[T3_COMP14] = @P18
          ,[T3_COMP15] = @P19
          ,[T3_COMP16] = @P20
          ,[T3_COMP17] = @P21
          ,[T3_COMP18] = @P22
          ,[T3_COMP19] = @P23
          ,[T3_COMP20] = @P24
          ,[T3_TYPE] = @P25
          ,[T3_INFO_FLOAT01] = @P26
          ,[T3_INFO_DATE01] = @P27
          ,[T3_INFO_DATE02] = @P28
          ,[T3_INFO_DATE03] = @P29
          ,[T3_INFO_DATE04] = @P30
          ,[T3_INFO_DATE05] = @P31
          ,[T3_INFO_STR01] = @P32
          ,[T3_INFO_STR02] = @P33
          ,[T3_INFO_STR03] = @P34
          ,[T3_INFO_STR04] = @P35
          ,[T3_INFO_STR05] = @P36
          ,[T3_INFO_STR06] = @P37
          ,[T3     </frame>
        </executionStack>
        <inputbuf>
    (@P1 nvarchar(150),@P2 ntext,@P3 smallint,@P4 smallint,@P5 ntext,@P6 ntext,@P7 ntext,@P8 ntext,@P9 ntext,@P10 ntext,@P11 ntext,@P12 ntext,@P13 ntext,@P14 ntext,@P15 ntext,@P16 ntext,@P17 ntext,@P18 ntext,@P19 ntext,@P20 ntext,@P21 ntext,@P22 ntext,@P23 ntext,@P24 ntext,@P25 smallint,@P26 float,@P27 datetime,@P28 datetime,@P29 datetime,@P30 datetime,@P31 datetime,@P32 nvarchar(255),@P33 nvarchar(255),@P34 nvarchar(255),@P35 nvarchar(255),@P36 nvarchar(255),@P37 nvarchar(255),@P38 nvarchar(255),@P39 nvarchar(255),@P40 nvarchar(255),@P41 nvarchar(255),@P42 smallint,@P43 smallint,@P44 int,@P45 int,@P46 int,@P47 int)UPDATE [TABLE3]
       SET 
          [T3_LIB] = @P1
          ,[T3_DESC_1] = @P2
          ,[T3_OUT] = @P3
          ,[T3_CHECK1] = @P4
          ,[T3_COMP1] = @P5
          ,[T3_COMP2] = @P6
          ,[T3_COMP3] = @P7
          ,[T3_COMP4] = @P8
          ,[T3_COMP5] = @P9
          ,[T3_COMP6] = @P10
          ,[T3_COMP7] = @P11
          ,[T3_COMP8] = @P12
          ,[T3_COMP9] = @P13
          ,[T3_COMP10] = @P14
          ,[T3_COMP11] = @P15
          ,[T3_COMP    </inputbuf>
       </process>
     
       <process id="process5c60988" taskpriority="0" logused="0" waitresource="PAGE: 15:1:3850156" waittime="1345" ownerId="43285021" transactionname="SELECT" lasttranstarted="2015-12-02T02:15:55.463" XDES="0x8b905780" lockMode="S" schedulerid="21" kpid="12468" status="suspended" spid="819" sbid="0" ecid="0" priority="0" trancount="0" lastbatchstarted="2015-12-02T02:15:55.463" lastbatchcompleted="2015-12-02T02:15:55.463" clientapp="SSIS-Package-{719B6DFB-47D0-4497-A0BA-475CEB08BC7F}DGW2K841.CRM_User.CRM" hostname="DGW2K861" hostpid="6700" loginname="CRM_User" isolationlevel="read committed (2)" xactid="43285021" currentdb="15" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
        <executionStack>
         <frame procname="adhoc" line="1" stmtstart="30" sqlhandle="0x02000000f461332ea06186e4a544680ed3114ec2107c8ae1">
    select * from (select T3_CODE,convert(nvarchar,T3_COMP4,15) as COMP4 from table3 where   T3_COMP4 is not null) [refTable]
    where [refTable].[COMP4] = @P1     </frame>
         <frame procname="unknown" line="1" sqlhandle="0x000000000000000000000000000000000000000000000000">
    unknown     </frame>
        </executionStack>
        <inputbuf>
    (@P1 nchar(50))select * from (select T3_CODE,convert(nvarchar,T3_COMP4,15) as COMP4 from table3 where   T3_COMP4 is not null) [refTable]
    where [refTable].[COMP4] = @P1    </inputbuf>
       </process>
     
      </process-list>
      <resource-list>
       <pagelock fileid="1" pageid="1704891" dbid="15" objectname="CRM.CNEDDEV.table3" id="lock38a505200" mode="SIU" associatedObjectId="72057662935334912">
        <owner-list>
         <owner id="process5c60988" mode="S"/>
        </owner-list>
        <waiter-list>
         <waiter id="process5c94e08" mode="IX" requestType="convert"/>
        </waiter-list>
       </pagelock>
       <pagelock fileid="1" pageid="3850156" dbid="15" objectname="CRM.CNEDDEV.table3" id="lock38a30cd00" mode="IX" associatedObjectId="72057662935334912">
        <owner-list>
         <owner id="process5c94e08" mode="IX"/>
        </owner-list>
        <waiter-list>
         <waiter id="process5c60988" mode="S" requestType="wait"/>
        </waiter-list>
       </pagelock>
      </resource-list>
     </deadlock>
    </deadlock-list>

  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
    1) pas forcément, ça peut être l'inverse. Ce que vous voyez c'est qui a été la victime
    2) en passant la souris sur l'objet graphique ovale vous allez obtenir le texte SQL des requêtes en cause, mais pas quelle session ou user SQL.
    3) il n'est pas possible d'empêcher les verrous de mise à jour, il est cependant théoriquement possible de faire en sorte d'éradiquer tout interblocage en utilisant l'algorithme de DJIKSTRA... pas forcément simple à appliquer (voir ci-après). D'autres choses sont possible pour réduire les verrous mortels : indexation, ordonnancement, diminution du niveau d’isolation...


    Exemple de prévérouillage correspondant à l'application de l'algorithme du banquier de DJIKSTRA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
     
    BEGIN TRAN;
     
    SELECT DISTINCT 1
    FROM [NEW].[T_EMPLOYEE_EMP] TABLESAMPLE (1 PERCENT) WITH(TABLOCK, XLOCK)
         CROSS JOIN [NEW].[T_ADRESSE_LIGNE_ADL] TABLESAMPLE (1 PERCENT) WITH(TABLOCK, XLOCK);
     
    --> prévention du deadlock en verrouillant d'entrée et rapidement au niveau exclusif 
    --  toutes les ressources en même temps de manière préalable (théorème de DJIKSTRA)
     
    -- traitement SQL
     
    COMMIT;
    Ceci bloque pour la durée de la transaction, les lignes potentiellement candidate des tables incriminées dans le traitement.

    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
    Membre éclairé Avatar de crashyear
    Homme Profil pro
    Responsable d’exploitation informatique
    Inscrit en
    Janvier 2006
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Responsable d’exploitation informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2006
    Messages : 267
    Par défaut
    J'ai pas tout compris...
    Mais, dans le .xdl, j'ai remarqué que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clientapp="SSIS-Package-{719B6DFB-47D0-4497-A0BA-475CEB08BC7F}DGW2K841.CRM_User.CRM"
    était identique pour l'update et le select.
    Est-ce que cela veut dire que le package SSIS s'autobloque ?

  4. #4
    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
    Citation Envoyé par crashyear Voir le message
    J'ai pas tout compris...
    Mais, dans le .xdl, j'ai remarqué que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clientapp="SSIS-Package-{719B6DFB-47D0-4497-A0BA-475CEB08BC7F}DGW2K841.CRM_User.CRM"
    était identique pour l'update et le select.
    Est-ce que cela veut dire que le package SSIS s'autobloque ?
    C'est tout à fait possible si votre flux SSIS possède différentes branches exécutées en parallèle.

    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/ * * * * *

  5. #5
    Expert confirmé
    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 : 47
    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
    Par défaut
    Citation Envoyé par crashyear Voir le message
    J'ai pas tout compris...
    Mais, dans le .xdl, j'ai remarqué que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    clientapp="SSIS-Package-{719B6DFB-47D0-4497-A0BA-475CEB08BC7F}DGW2K841.CRM_User.CRM"
    était identique pour l'update et le select.
    Est-ce que cela veut dire que le package SSIS s'autobloque ?
    Oui effectivement possible et il faudra voir ce que font les 2 requêtes concernées.

    Juste faire attention que pour la 2ème requête (celle de droite), tu as un verrou spécifique SIU (Shared Intent Update). Ceci signifie que tu dois avoir une mise à jour (UPDATE) à priori qui se fait avant le SELECT d'où le SIU.

    ++

Discussions similaires

  1. [Windows]lecture des fichier lnk (raccourcis)
    Par Tiaps dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 21/10/2009, 20h27
  2. Réponses: 8
    Dernier message: 28/09/2007, 15h51
  3. [FLASH MX2004] Lecture des parametres de l'url
    Par matN59 dans le forum Flash
    Réponses: 5
    Dernier message: 23/06/2006, 14h30
  4. Trouver les redirections dans des traces
    Par severine dans le forum Développement
    Réponses: 3
    Dernier message: 21/04/2004, 19h51
  5. Réponses: 4
    Dernier message: 23/07/2003, 14h07

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