En utilisant Sql Server 2005 Profiler, quels sont les événements, colonnes et filtres que vous tracez pour trouver vos requêtes et procédures stockées les plus lentes ?
Lenteur = supérieure à N secondes, 10 pour l'exemple.
En utilisant Sql Server 2005 Profiler, quels sont les événements, colonnes et filtres que vous tracez pour trouver vos requêtes et procédures stockées les plus lentes ?
Lenteur = supérieure à N secondes, 10 pour l'exemple.
En SQL 2005, vous pouvez utiliser les vues de gestion pour trouver les requêtes qui s'exécutent lentement. Un bon script que j'ai trouvé il y a un certain temps sur Performances du serveur SQL vous aidera à démarrer ; il liste les données en commençant par les plus lentes.
SELECT creation_time
,last_execution_time
,total_physical_reads
,total_logical_reads
,total_logical_writes
, execution_count
, total_worker_time
, total_elapsed_time
, total_elapsed_time / execution_count avg_elapsed_time
,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset END
- qs.statement_start_offset)/2) + 1) AS statement_text
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
ORDER BY total_elapsed_time / execution_count DESC;
Connaissez-vous l'unité de mesure des temps : total_worker_time, total_elapsed_time, et avg_elapsed_time ?
Les temps sont en microsecondes ; MSDN a une bonne ventilation sur la vue de gestion. msdn.microsoft.com/fr/us/library/ms189741.aspx
Oui, ces DMV sont excellents, mais ils sont aussi DYNAMIQUES, comme leur nom l'indique, c'est-à-dire qu'ils sont vidés à chaque fois que le serveur démarre. Si votre serveur est redémarré chaque nuit, ces données ne représentent pas un échantillon très fiable pour un jour donné. Traitez donc ces mesures avec précaution - elles sont dynamiques et peuvent être basées sur un échantillon assez réduit...
Avant d'utiliser le profileur, je vérifie les rapports d'utilisation intégrés. Faites un clic droit sur une base de données, Rapports, Rapports standard, puis Statistiques d'exécution des objets.
Elle liste les plans d'exécution actuellement mis en cache, ainsi que la quantité de ressources et le nombre de fois qu'ils ont été exécutés. Cela donne généralement une très bonne idée de ce qui occupe le serveur.
@Andomar, est-il possible d'exécuter ce rapport sur un serveur de production ? J'ai essayé d'exécuter ce rapport sur l'un de mes serveurs de production, et il indique toujours "retreiving data" après une minute. Je l'ai arrêté par sécurité.
La colonne de la durée me suffit, mais je regarde aussi parfois les colonnes des lectures et des écritures.
J'utilise le filtre TSQL:StmtCompleted pour obtenir les requêtes brutes. Vous pouvez y ajouter d'autres requêtes, comme les procédures stockées, mais le filtre TSQL est la "base" que vous devez visualiser. Comme le Article de MSDN dit
"L'exécution d'une procédure stockée peut être surveillée par les fonctions SP:Starting, SP:StmtStarting, SP:StmtCompleted, et SP:Completed et toutes les classes d'événements classes d'événements TSQL".
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Définissez "lent". Une requête peut être lente, mais cela ne concerne que le nombre d'appels effectués et leur caractère critique ou non.