Performance analysis of SQL Server — about CPU

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Performance analysis of SQL Server — about CPU相关的知识,希望对你有一定的参考价值。

--查询编译以来 cpu耗时总量最多的前50条(Total_woker_time)
SELECT TOP 50
total_worker_time/1000 AS [总消耗CPU 时间(ms)],
execution_count [运行次数],
qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],
last_execution_time AS [最后一次执行时间],
max_worker_time /1000 AS [最大执行时间(ms)],
SUBSTRING(qt.text,qs.statement_start_offset/2+1,
(CASE WHEN qs.statement_end_offset = -1
THEN DATALENGTH(qt.text)
ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
AS [使用CPU的语法], qt.text [完整语法],
qt.dbid, dbname=db_name(qt.dbid),
qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
FROM sys.dm_exec_query_stats qs WITH(nolock)
CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE execution_count>1
ORDER BY total_worker_time DESC
sql server系统作为一个整体性,它都是紧密相连的,例如:解决了sql语句中I/O开销较多的问题,那对应的CPU开销也会减少,反之解决了CPU开销最多的,那对应I/O开销也会减少。解决I/O开销后CPU耗时也减少,是因为CPU下的Worker线程需要扫描I/O页数就少了,出现的资源锁的阻塞也减少了

2.数据库CPU很高,查询问题的SQL,根据时间“等待毫秒”,查出问题的SQL SELECT spid, blocked, DB_NAME(sp.dbid)
AS DBName, program_name, waitresource, sp.waittime 等待毫秒, sp.stmt_start,
lastwaittype, sp.loginame, sp.Status, sp.hostname, a.[Text] AS [TextData],
SUBSTRING(A.text, sp.stmt_start / 2, (CASE WHEN sp.stmt_end = -1 THEN
DATALENGTH(A.text) ELSE sp.stmt_end END - sp.stmt_start) / 2) AS [current_cmd]
FROM sys.sysprocesses AS sp OUTER APPLY sys.dm_exec_sql_text (sp.sql_handle) AS
A WHERE spid > 50 --and lastwaittype=‘HADR_SYNC_COMMIT‘ AND Status<>‘sleeping‘
ORDER BY sp.waittime desc;

3.案例分享
SQL Server导致CPU爆高,一般是异常SQL引起,怀疑是服务器的磁盘性能问题,停SQL服务,用测试一下磁盘的性能,磁盘性能的确不怎样,但是也没差到这样的地步。后来发现一条查询SQL,有3亿条,查询taskid字段没有索引,导致查询IO很慢,进而影响CPU爆高。后重建一张新的tb_log表,并在taskid字段加上索引,性能问题解决。

以上是关于Performance analysis of SQL Server — about CPU的主要内容,如果未能解决你的问题,请参考以下文章

LMbench - Tools for Performance Analysis | 内核基准测试

adidas crazylight 2018 performance analysis review

LMbench - Tools for Performance Analysis | 内核基准测试

How Basic Performance Analysis Saved Us Millions-------火焰图

[Mathematics][Fundamentals of Complex Analysis][Small Trick] The Trick on drawing the picture of sin

Linux Performance Analysis and Tools(Linux性能分析和工具)