给定某种等待,您如何查找导致生产SQL 2008 R2 Server上安全等待的查询?在这种特殊情况下,我想知道async_network_io。 />

#1 楼

我最喜欢的检查方法是使用Adam Machanic的出色的sp_WhoIsActive存储过程。以下是有关如何使用它的视频以及下载代码的链接:

http://www.brentozar.com/archive/2010/09/sql-server-dba-scripts-how- to-find-slow-sql-server-queries /

要注意的是,您必须定期运行它以检查结果。如果希望定期为您收集这些数据,请查看Kendra Little的有关将sp_WhoIsActive结果捕获到表中的教程:

http://www.littlekendra.com/2011/02/01/whoisactive /

最后,如果您希望每当查询等待async_network_io时触发某些内容,则可以使用一种名为扩展事件的新工具。就像SQL Server引擎中的调试点,您可以在其中进行魔术。坦白说,现在在2008年使用它有点痛苦。

#2 楼

“ async_wait_io”不是等待类型。可能的ASYNC%等待类型如下:

http://www.toadworld.com/platforms/sql-server/w/wiki/9862.wait-types.aspx
http://blogs.msdn.com/b /psssql/archive/2009/11/03/the-sql-server-wait-type-repository.aspx
http://msdn.microsoft.com/zh-cn/library/ms179984.aspx
http://sqlskills.com/BLOGS/PAUL/category/Wait-Stats.aspx

我去查询查找当前等待的对象:

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 = '?'


评论


抱歉,我的意思是async_network_io。

–凯尔·勃兰特(Kyle Brandt)
11 Mar 4 '11 at 21:41

其他非常好的文章:失去Brent O和Buck Woody的等待统计以及Wait的统计。他们非常值得!

–玛丽安
2011年3月4日在21:51

@Marian:Brent今天向我展示了一些东西,但是在我们接触到这个东西之前已经没时间了,也许那篇文章会一样好:-

–凯尔·勃兰特(Kyle Brandt)
2011年3月4日在21:54

@Kyle,你有Brent给你看东西,还问我们吗? :)您应该将他拴在办公室的椅子上..擦干他的大脑..然后放开他;)。并且不要忘记让我们知道结果!

–玛丽安
2011年3月4日21:59



@Marian:是的,很幸运能得到他的帮助。问题是,如果我在这里得到答案,那么互联网上的其他所有人也都会得到答案:-)

–凯尔·勃兰特(Kyle Brandt)
11 Mar 4 '11 at 22:08