How do I find out what is hammering my SQL Server?

后端 未结 6 2106
闹比i
闹比i 2020-12-07 08:45

My SQL Server CPU has been at around 90% for the most part of today.

I am not in a position to be able to restart it due to it being in constant use.

Is it p

6条回答
  •  南笙
    南笙 (楼主)
    2020-12-07 09:42

    You can find some useful query here:

    Investigating the Cause of SQL Server High CPU

    For me this helped a lot:

    SELECT s.session_id,
        r.status,
        r.blocking_session_id 'Blk by',
        r.wait_type,
        wait_resource,
        r.wait_time / (1000 * 60) 'Wait M',
        r.cpu_time,
        r.logical_reads,
        r.reads,
        r.writes,
        r.total_elapsed_time / (1000 * 60) 'Elaps M',
        Substring(st.TEXT,(r.statement_start_offset / 2) + 1,
        ((CASE r.statement_end_offset
    WHEN -1
    THEN Datalength(st.TEXT)
    ELSE r.statement_end_offset
    END - r.statement_start_offset) / 2) + 1) AS statement_text,
        Coalesce(Quotename(Db_name(st.dbid)) + N'.' + Quotename(Object_schema_name(st.objectid, st.dbid)) + N'.' +
        Quotename(Object_name(st.objectid, st.dbid)), '') AS command_text,
        r.command,
        s.login_name,
        s.host_name,
        s.program_name,
        s.last_request_end_time,
        s.login_time,
        r.open_transaction_count
    FROM sys.dm_exec_sessions AS s
        JOIN sys.dm_exec_requests AS r
    ON r.session_id = s.session_id
        CROSS APPLY sys.Dm_exec_sql_text(r.sql_handle) AS st
    WHERE r.session_id != @@SPID
    ORDER BY r.cpu_time desc
    

    In the fields of status, wait_type and cpu_time you can find the most cpu consuming task that is running right now.

提交回复
热议问题