簡體   English   中英

在SQL Server Profiler中記錄數據傳輸時間

[英]Logging data transfer time in SQL Server Profiler

我一直很頻繁地使用SQL Server事件探查器來檢查冗余或性能不佳的查詢。

但是,是否有一個事件(在巨型列表中)允許您記錄將數據從數據庫傳輸到應用程序所需的總時間?

對於返回比應用程序所需更多數據的查詢,這將是一個很好的指示。

數據離開SQL Server之后,將由您決定(NIC和網絡延遲)。

您通常會從客戶端的角度進行分析。

使用SQL事件探查器觀察查詢執行的讀取次數。 這是一個很好的指標。 使用'SELECT *'查詢通常不能使用覆蓋索引,因此請查找“書簽”查詢。

在我看來,您想要識別返回大結果集的查詢。 接下來,您真正想做的就是確定哪些查詢消耗的數據量最大。 可以從邏輯讀取和物理讀取兩者來看。

為了在報告中查看此信息,您可以使用免費的性能儀表盤報告或使用SQL Server DMV。

例如,以下查詢來自Glenn Berry的出色SQL Server性能博客

/* Top Cached SPs By Total Logical Reads (SQL 2008). Logical reads relate to memory pressure */
SELECT TOP(25) p.name AS [SP Name], qs.total_logical_reads AS [TotalLogicalReads], 
qs.total_logical_reads/qs.execution_count AS [AvgLogicalReads],qs.execution_count, 
ISNULL(qs.execution_count/DATEDIFF(Second, qs.cached_time, GETDATE()), 0) AS [Calls/Second], 
qs.total_elapsed_time, qs.total_elapsed_time/qs.execution_count 
AS [avg_elapsed_time], qs.cached_time
FROM sys.procedures AS p
INNER JOIN sys.dm_exec_procedure_stats AS qs
ON p.[object_id] = qs.[object_id]
WHERE qs.database_id = DB_ID()
ORDER BY qs.total_logical_reads DESC;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM