go backarticles

Articles of SQLschool.gr Team

Πώς θα βρω τα queries που κάνουν υψηλή χρήση της CPU;

Antonios Chatzipavlis

Λοιπόν μιας και απέκτησα και εδω ένα blog είπα να κάνω σεφτέ με κάτι που λίγο ή πολύ  όσοι ασχολούμαστε με SQL Server αντιμετωπίζουμε.

Πως θα βρω τα queries που κάνουν υψηλή χρήση της CPU;

H απάντηση στο ερώτημα αυτό είναι η παρακάτω custom stored procedure η οποία δουλεύει σε SQL Server 2005 & 2008

 

create procedure spFindQueriesThatUseHighCPU 
as 
    Set NOCOUNT ON 

    SELECT TOP 100 
            (a.total_worker_time/a.execution_count) as [Avg_CPU_Time], -- the time is in ms 
            Convert(Varchar,Last_Execution_Time) as 'Last_execution_Time', 
            Total_Physical_Reads, 
            SUBSTRING(b.text,a.statement_start_offset/2, 
            (case 
                when a.statement_end_offset = -1 then len(convert(nvarchar(max), b.text)) * 2 
                else 
                a.statement_end_offset end - a.statement_start_offset)/2) as Query_Text, 
            dbname=Upper(db_name(b.dbid)), 
            b.objectid as 'Object_ID' 
    FROM sys.dm_exec_query_stats a 
        cross apply sys.dm_exec_sql_text(a.sql_handle) as b 
    ORDER BY [Avg_CPU_Time] DESC 
go

Relative Articles

Leave your comment

Login with your SQLschool.gr account if you want to comment on this article.


PASS chapter logo

The Official PASS Local Group for Greece

1434 33 595 27 39 1326
sql school greece logo
© 2010-2019 All rights reserved