Sql-Server

MSSQL Server 是否有相當於 MySQL 的查詢日誌?

  • October 28, 2016

我使用 MySQL 已經很長時間了,發現通用查詢日誌和慢查詢日誌對於找出伺服器上發生的事情以及辨識瓶頸非常有用。

現在我需要使用 SQL Server。SQL Server 是否有類似的日誌設施?如果有,它們叫什麼?

SQL 伺服器將所有查詢的統計資訊保存在各種表中。您可以使用以下程式碼來確定執行時間最長的查詢是什麼(從sys.dm_exec_query_stats表中)。

您應該執行以下 DBCC 命令:

此 DBCC 命令清除伺服器記憶體並重新開始記錄查詢執行時間:

DBCC FREEPROCCACHE

執行此查詢以查找執行時間最長的查詢:

SELECT DISTINCT TOP 10
t.TEXT QueryName,
s.execution_count AS ExecutionCount,
s.max_elapsed_time AS MaxElapsedTime,
ISNULL(s.total_elapsed_time / s.execution_count, 0) AS AvgElapsedTime,
s.creation_time AS LogCreatedOn,
ISNULL(s.execution_count / DATEDIFF(s, s.creation_time, GETDATE()), 0) AS FrequencyPerSec
FROM sys.dm_exec_query_stats s
CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t
ORDER BY
s.max_elapsed_time DESC
GO 

您還應該查看Technet雜誌文章Optimizing SQL Server Query Performance,其中包含用於確定哪個查詢是最昂貴的讀取 I/O 查詢的查詢,以及有關如何查看執行計劃和其他優化的指南。

引用自:https://serverfault.com/questions/182665