通常SQL指令的效能不佳其中的一個原因是因為大量的IO的緣故,為了要減少IO的產生第一件要務就是找出最花費IO的SQL指令,本篇藉著使用DMV找出最消耗IO的SQL指令。
通常SQL指令的效能不佳的原因有許多,其中的一個原因是因為大量的IO的緣故,所以增加SQL指令的效能方法之一就是減少IO的產生,為了要減少IO的產生第一件要務就是找出最花費IO的SQL指令,以下就是使用DMV找出最消耗IO的SQL指令。
--使用dmv找出最消耗IO的查詢
/*
logical_reads:查詢時從DATA CACHE讀取PAGE
physical_reads:查詢時從DATA CACHE讀取PAG從硬碟讀取資料
*/
SELECT TOP 10
[IO總和] = (A.total_logical_reads + A.total_physical_reads+ A.total_physical_reads)
,[平均IO] = (A.total_logical_reads + A.total_physical_reads)/A.execution_count
,A.execution_count [執行次數]
,B.[text] [SQL指令]
FROM sys.dm_exec_query_stats A
CROSS APPLY sys.dm_exec_sql_text(A.sql_handle) as B
WHERE B.[text] NOT LIKE '%SCHEMA_NAME(%'--去除系統的SQL指令
ORDER BY [IO總和] DESC
執行結果:
參考網址:
sys.dm_exec_query_stats
sys.dm_exec_sql_text