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 :

Escalade de Verrou


Sujet :

Administration SQL Server

  1. #1
    Membre du Club
    Homme Profil pro
    test
    Inscrit en
    Octobre 2016
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : test
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 134
    Points : 49
    Points
    49
    Par défaut Escalade de Verrou
    hello ,

    je travaille sur un projet de purge du Data et j'avais une question par rapport a la contexte de Verrou

    Dans ma requêté de delete suivante et a la présence de l'opération Where quel Type de verrou serai mis sur mon table Est ce c'est un verrou de ligne ou un verrou sur la table

    Dans Quel cas SQL décide de faire un escalade verrou de ligne vers Table

    merci pour vos éclaircissement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    delete P from DT_Prod P inner join Purge_PR_ J ON p.num_si= J.num_si
    			 Where P.siin (select si  from #temp_Select_p) 
                 and YEAR(DAT_PI) =2020 AND   MONTH(DAT_PI) =1

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Le phénomène de "lock escalation" se produit quand il y a un grand nombre de verrous fins de type ligne ou page.
    L'optimiseur considère que verrouiller l'ensemble de la ressource est plus pertinent que de maintenir des verrous unitaires.
    Donc, selon que la requête concerne une grande partie ou pas de l'effectif total de la table ciblée par le DELETE, il est possible que ce phénomène se produise.

    Pour le reste, il serait sans doute plus pertinent de remplacer la requête corrélée IN (select[...] par une équijointure avec la table concernée

  3. #3
    Membre du Club
    Homme Profil pro
    test
    Inscrit en
    Octobre 2016
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Tunisie

    Informations professionnelles :
    Activité : test
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2016
    Messages : 134
    Points : 49
    Points
    49
    Par défaut
    merci pour votre réponse , je vais remplacer la clause in par une jointure

    par contre j'ai une autre question svp faut-il indexes er le colonne Date DAT_PI Pour accélérer le processus de ma requêtes

    merci

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 109
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    Indexer DAT_PI ne sert pas dans votre contexte car vous utilisez une fonction dessus. Il faudrait créer un index sur l'année de DAT_PI

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Une autre solution serait d'utiliser un Between sur la colonne DAT_PI, au lieu d'extraire l'année et le mois.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ...
    and DAT_PI between '2020-01-01' and '2020-01-31'
    Dans ce cas un index sur DAT_PI pourra être utilisé.

    Tatayo.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 774
    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 774
    Points : 52 746
    Points
    52 746
    Billets dans le blog
    5
    Par défaut
    En ce qui concerne le type de verrous initial; ligne ou page; c'est lui qui décide en fonction des index de la cardinalité des lignes à manipuler et du nombre de verrous à poser.
    En principe ligne sauf si pi plus de 5000 verrous de ligne alors verrous de PAGE.

    Au cours d'un traitement (par exemple procésure avec curseur) il peut faire une escalade :
    passer le d'un verrous de LIGNE/PAGE à un verrous de partition (s'il existe une partition) sinon un verrou de table.

    Il n'y a jamais escalade de LIGNE à PAGE.

    Les escalades se font soit du fait d'une
    • pression mémoire (volume de verrous à gérer occupant de l'espace mémoire)
    • pression de ressource (quantité de verrous à gérer).



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

Discussions similaires

  1. Verrou Oracle : trouver le verrou d'un enregistrement
    Par stephDeZ dans le forum Oracle
    Réponses: 13
    Dernier message: 25/12/2008, 12h59
  2. [Verrou] SELECT FOR UPDATE
    Par e1lauren dans le forum PostgreSQL
    Réponses: 10
    Dernier message: 13/10/2005, 17h06
  3. Message d'erreur : Fichier verrou trop important !
    Par chasseur37 dans le forum Bases de données
    Réponses: 8
    Dernier message: 06/09/2005, 10h34
  4. transaction et verrou sous asp
    Par sex-sansbol dans le forum ASP
    Réponses: 2
    Dernier message: 18/08/2004, 11h15
  5. message d'erreur : "le fichier verrou est trop importan
    Par lol_adele dans le forum Bases de données
    Réponses: 4
    Dernier message: 10/06/2004, 07h58

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