[SQL 2005 DMV] 列出執行速度較慢的SQL statement

市面上有許多SQL資料庫的管理軟體,可以隨時監控資料庫執行狀況。不過這些資料庫監控軟體通常需要安裝常駐程式在資料庫伺服器,定時蒐集資料,對於系統效能還是有一定程度的影響。事實上,在SQL 2005可以透過DMV (dynamic management views),查詢資料庫的系統資訊,SQL 2005會將系統資訊儲存在cache中 (server重開後這些系統資訊會被清除),管理者可以透過dmv查詢各種資料庫系統資訊,例如sys.dm_exec_query_stats是查詢query狀態的dmv。

這些dmv顯示的欄位通常不易閱讀,但可以結合資料庫的系統table,就可以自行撰寫出可讀性較高的Query,以供後續維護之用。例如下面這個Query是列出執行速度較慢的前五十大SQL statement:


select top 50 * from
(
SELECT SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2) + 1) AS StatementText,
last_execution_time as LastExecuted,
last_elapsed_time/1000000.0 as ElapsedTimeInSeconds,
execution_count as ExecCountFromLastCompile
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
) t
where ElapsedTimeInSeconds >1
order by ElapsedTimeInSeconds desc

相關文章

如何將電腦畫面經由 Chromecast 投放到電視螢幕上

Mac與Android裝置傳輸檔案的方法

Chrome 的檔案續傳功能

使用 Line Bot API 製作聊天機器人