228
Chapitre 7. Transactions et verrous
Vous obtenez des informations sur les attentes à travers les vues de gestion dynamique sys.dm_tran_locks, sys.dm_os_wait_stats, sys.dm_os_waiting_tasks et
sys.dm_exec_requests.
La DMV sys.dm_os_wait_stats accumule les statistiques sur les attentes (waits).
Pour chaque type d’attente (l’indication de la raison de l’attente d’un processus SQL
Server), cette vue indique principalement le nombre d’attentes et leur durée totale
en millisecondes. Les valeurs s’incrémentent au fur et à mesure de l’activité de l’instance, et elles sont remises à zéro – comme pour toutes les DMV – lors d’un redémarrage de celle-ci. Dans ce cas, vous pouvez aussi remettre explicitement les compteurs
à zéro, par exemple avant de lancer un lot de requêtes test, à l’aide de cette commande DBCC :
dbcc sqlperf('sys.dm_os_wait_stats', clear)
Voyons en pratique une attente. Exécutons ces deux requêtes dans deux sessions
différentes :
-- dans la session 1
BEGIN TRAN
UPDATE Sales.Currency
SET Name = 'Franc Francais'
WHERE CurrencyCode = 'EUR'
-- dans la session 2
BEGIN TRAN
SELECT *
FROM Sales.Currency WITH (TABLOCK)
WHERE CurrencyCode = 'CHF'
Que voyons-nous avec une requête sur sys.dm_tran_locks (légèrement modifiée
pour afficher les deux spid en présence, vous trouverez cette requête sur le site
d’accompagnement du livre) ? Réponse dans la figure 7.5.
Figure 7.5 — Attentes
Nous voyons que le spid 53 cherche à poser un verrou partagé sur la table Currency. Le request_status est WAIT, ce qui indique que le verrou est en attente. Nous
Précédent

- 240/334

Suivant