Compte tenu d’un certain type d’attente, comment identifier les requêtes qui causent ces attentes en toute sécurité sur un serveur SQL 2008 R2 de production?
Dans ce cas particulier, je me pose des questions async_network_io
.
Compte tenu d’un certain type d’attente, comment identifier les requêtes qui causent ces attentes en toute sécurité sur un serveur SQL 2008 R2 de production?
Dans ce cas particulier, je me pose des questions async_network_io
.
Réponses:
Ma façon préférée de vérifier cela consiste à utiliser l'excellent processus stocké sp_WhoIsActive d'Adam Machanic. Voici une vidéo sur la façon de l'utiliser et un lien pour télécharger le code:
http://www.brentozar.com/archive/2010/09/sql-server-dba-scripts-how-to-find-slow-sql-server-queries/
Le problème, c'est que vous devez l'exécuter périodiquement pour vérifier les résultats. Si vous souhaitez que ces données soient collectées périodiquement pour vous, consultez le didacticiel de Kendra Little sur la capture des résultats de sp_WhoIsActive dans une table:
http://www.littlekendra.com/2011/02/01/whoisactive/
Enfin, si vous souhaitez que quelque chose se déclenche lorsqu'une requête attend async_network_io, vous pouvez utiliser un nouvel outil appelé Evénements étendus. C'est comme des points de débogage dans le moteur SQL Server où vous pouvez créer de la magie. Franchement, c'est un peu pénible à utiliser maintenant en 2008.
'async_wait_io' n'est pas un type d'attente. Les types d'attente ASYNC% possibles sont les suivants:
Quelques bons liens pour les types d'attente:
Mon aller à la requête pour trouver les temps d'attente actuels:
SELECT req.session_id
,blocking_session_id
,ses.host_name
,DB_NAME(req.database_id) AS DB_NAME
,ses.login_name
,req.status
,req.command
,req.start_time
,req.cpu_time
,req.total_elapsed_time / 1000.0 AS total_elapsed_time
,req.command
,req.wait_type
,sqltext.text
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
JOIN sys.dm_exec_sessions ses
ON ses.session_id = req.session_id
WHERE req.wait_type IS NOT NULL
--WHERE req.wait_type = '?'