六、CPU优化(6)DMV与计数器

一、CPU相关的DMV

1. 查看使用CPU最多的前50名

select highest_cpu_queries.*, q.dbid, q.objectid, q.number, q.encrypted, q.[text]

from

( select top 50 qs.*

from sys.dm_exec_query_stats qs

order by qs.total_worker_time desc ) as highest_cpu_queries

cross apply sys.dm_exec_sql_text(plan_handle) as q

order by highest_cpu_queries.total_worker_time desc


2. 查看最频繁重编译的前20个存储过程

select top 20 sql_text.text, sql_handle, plan_generation_num, execution_count, dbid, objectid

from sys.dm_exec_query_stats a

cross apply sys.dm_exec_sql_text(sql_handle) as sql_text

where plan_generation_num > 1

order by plan_generation_num desc


3. 计算signal wait占整wait时间的百分比

select CONVERT(numeric(5,4),sum(signal_wait_time_ms)/sum(wait_time_ms))

from sys.dm_os_wait_stats

该值描述了指令等待CPU资源的时间占总时间的百分比。如果超过25%,说明CPU资源紧张。


4. 并行运行的Cxpacket等待状态

declare @Cxpacket bigint

declare @Sumwaits bigint

select @Cxpacket = wait_time_ms from sys.dm_os_wait_stats where wait_type = 'Cxpacket'

select @Sumwaits = SUM(wait_time_ms) from sys.dm_os_wait_stats

select CONVERT(numeric(5,4),@Cxpacket/@Sumwaits)

  并行运行意味着SQL Server查询引擎估算某一句语句执行的代价将会超过成本代价,或者没有合适的索引,或者筛选条件没能够筛选掉足够的记录,使得语句要返回大量的结果。为了提升OLTP系统的性能,这些都是尽量避免的。



二、CPU相关的性能计数器

1. 检查整个服务器的CPU使用情况

Processor: % Processor Time

Processor: % Privileged Time (Kernel Mode)

Processor: % User Time (User Mode)

System: Processor Queue length

Context switches/sec



2. 检查每个进程的CPU使用情况

Processor: % Processor Time

Processor: % Privileged Time

Processor: % User Time



3. 估算执行计划重用率

  关注SQLServer:SQL Statistics的计数器,大致估算出执行计划重用率。对于OLTP系统的核心语句,必须有大于95%的执行计划重用率。

  Initial Compilations = SQL Compilations/sec - SQL Re-Comilations/sec

  执行计划重用率 = (Batch requests/sec - Initial Compilations/sec) / Batch requests/sec



本文结语:

  通过监视计数器,或者使用DMV,查看CPU的性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值