Sql-Server

分析 SQL Server 網路 I/O

  • August 19, 2012

我從客戶端收到的一個常見請求是幫助找出哪些查詢或客戶端對 SQL Server 使乙太網鏈路飽和的貢獻最大。

理想情況下,我會查看一些計數器或 DMV,顯示按查詢、客戶端、應用程序、數據庫等聚合的網路 I/O。

由於似乎沒有直接的方法,作為替代,我通常查看 sys.dm_exec_query_stats 中的 *_rows 列(我認為這些列僅存在於 2008 R2+ 中)並查找似乎涉及 BLOB。

有沒有更好的方法來解決這個問題?

您正確的 2008R2 及更高版本已將 *_rows 添加到 sys.dm_exec_query_stats。我會說這是要走的路。

您將有大量查詢可以創建大量磁碟 IO,但結果集仍然很小。但是,如果沒有龐大的邏輯 IO,就不可能擁有龐大的結果集。

因此,首先查看按邏輯 io 排序的查詢統計資訊,然後再查看行數。這會給你一個很好的起點。

在 2008 R2 之前,我會查看哪些具有大型邏輯 IO 的查詢具有與網路相關的等待統計資訊。這種方法的問題是。1)一旦網路飽和,很可能不僅您的大型查詢,而且幾乎所有查詢都將具有與網路相關的等待統計資訊。2)與網路相關的等待統計在很多情況下不是由網路相關問題引起的;-)

乾杯,愛德華

引用自:https://dba.stackexchange.com/questions/22734