sql server查詢IO消耗大的排查sql診斷語句


前段時間網站訪問量增大,雲服務器后台監控告警提示IOPS過大。我使用以下sql語句很快就找到sql server占用IO在的相關功能模塊。

select top 50 
    (total_logical_reads/execution_count) as avg_logical_reads,
    (total_logical_writes/execution_count) as avg_logical_writes,
    (total_physical_reads/execution_count) as avg_phys_reads,
     Execution_count, 
    statement_start_offset as stmt_start_offset, statement_end_offset as stmt_end_offset,
substring(sql_text.text, (statement_start_offset/2), 
case 
when (statement_end_offset -statement_start_offset)/2 <=0 then 64000
else (statement_end_offset -statement_start_offset)/2 end) as exec_statement,  sql_text.text,plan_text.*
from sys.dm_exec_query_stats  
cross apply sys.dm_exec_sql_text(sql_handle) as sql_text
cross apply sys.dm_exec_query_plan(plan_handle) as plan_text
order by 
--(total_logical_reads + total_logical_writes) /Execution_count Desc
 (total_logical_reads + total_physical_reads) /Execution_count Desc

可以找到avg_pshs_reads比較大的行,從text字段把對應的sql語句賦值出來。

常用的兩種解決辦法:

1、優化對應的sql語句(比如增加索引)

2、使用緩存


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM