`

Sql Server Cpu 100% 的常见原因及优化

 
阅读更多

 

Sql Server Cpu 100% 的情况并不太常见,一般引起 Sql Server 产生性能问题的,都是 阻塞、连接数、IO 磁盘等。所以,一般Sql Server 的使用率都是比较低的。但是,在有些情况下,还是会出现Cpu 100%的情况的。

 

Sql Server 在做哪些操作的时候,会比较集中使用 CPU 资源呢?常见的主要如下:

常见的原因:

 

1. 编译和重编译

 

编译是 Sql Server 为指令生成执行计划的过程。Sql Server 要分析指令要做的事情,分析它所要访问的表格结构,也就是生成执行计划的过程。这个过程主要是在做各种计算,所以CPU 使用比较集中的地方。

执行计划生成后会被缓存在 内存中,以便重用。但是不是所有的都可以 被重用。在很多时候,由于数据量发生了变化,或者数据结构发生了变化,同样一句话执行,就要重编译。

 

2. 排序(sort) 和 聚合计算(aggregation)

 

在查询的时候,经常会做 order by、distinct 这样的操作,也会做 avg、sum、max、min 这样的聚合计算,在数据已经被加载到内存后,就要使用CPU把这些计算做完。所以这些操作的语句CPU 使用量会多一些。

 

3. 表格连接(Join)操作

 

当语句需要两张表做连接的时候,SQL Server 常常会选择 Nested Loop 或 Hash 算法。算法的完成要运行 CPU,所以 join 有时候也会带来 CPU 使用比较集中的地方。

 

 

4. Count(*) 语句执行的过于频繁

 

特别是对大表 Count(*) ,因为 Count(*) 后面如果没有条件,或者条件用不上索引,都会引起 全表扫描的,也会引起 CPU 的大量运算

 

在 SQL SERVER 这里,和 CPU 有关的设置却很有限,主要在 sp_configure 下,常见的设置有 Priority Boost 和 Lightweight Pooling 

 

而对于 执行计划的观察,利用 sys.dm_exec_cached_plans 视图 会比较方便直观的观察,是很有的。

 

解决办法:

 

1. 紧急处理时,可以重启Sql Server 的服务,当然,如果 DB 是在线的 DB ,请谨慎此操作

 

2. 利用 Sql Server Profiler 来抓去语句,找出耗性能的SQL 语句,优化点。可以说,Sql 语句就好比 Sql server 的性能之匙,80 % 以上的 SQL SERVER 性能问题都是 SQL 语句引起的

 

3. 根据 累计 使用 CPU 资源最多的语句 和 最经常 需要编辑的存储过程 来优化 语句 和存储过程

复制代码
--使用DMV来分析SQL Server启动以来累计使用CPU资源最多的语句。例如下面的语句就可以列出前50名。

select 

    c.last_execution_time,c.execution_count,c.total_logical_reads,c.total_logical_writes,c.total_elapsed_time,c.last_elapsed_time, 

    q.[text]

from 

    (select top 50 qs.*

    from sys.dm_exec_query_stats qs

    order by qs.total_worker_time desc) as c

    cross apply sys.dm_exec_sql_text(plan_handle) as q

order by c.total_worker_time desc

go





--我们也可以找到最经常做重编译的存储过程。

select top 25 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

go
复制代码

 

分享到:
评论

相关推荐

    SQL Server数据库查询速度慢原因及优化方法

    【赛迪网-IT技术报道】SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:  1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)  2、I/O吞吐量小,形成了瓶颈效应。  3、没有...

    SQLServer安全及性能优化

    SQLServer安全及性能优化 修补漏洞 安装程序补丁修补漏洞 随时关注微软官方网站补丁升级 关闭不必要的端口 关闭联必要的服务 数据库引擎 SQL Server Analysis Services SQL Server Reporting Services SQL ...

    SQL查询安全性及性能优化

    网络经验:网络经验:三个效率是不一样的,但是我们发现经过SQLServer优化后性能一样。但我们并不能以此推翻前人经验。 执行计划总结 主要图表 检索表的所有行,当查询没有使用到索引时,查询所采用的形势即为表...

    八大案例,带你参透SQLServer优化

    常见的分析性能问题的工具有三种:诊断硬件资源,等待类型,性能语句。硬件资源通常有四个方面判断:CPU监控,性能计数器主要包括%ProcessorTime、ProcessorQueueLength、Batchrequest/sec、Transactions/sec(total_...

    Oracle数据库学习指南

    2. 《Oracle8 优化技术》摘录 (第二章 内存-CPU) 3. 《Oracle8 优化技术》摘录 (第三章 输入-输出) 4. EXP、IMP 命令详解 5. Oracle Index 的三个问题 6. Oracle PL-SQL语言基础 7. Oracle的分布式管理 ...

    Toad 使用快速入门

    帮助开发人员优化SQL,为他们提供各种优化模式下SQL执行计划,并且能够给出优化的建议,能够比较各种模式下实际的SQL运行结果,帮助开发人员真正高速地开发高效地代码。 Toad还可以外挂一些别的产品,比如PL/...

    音创收银76

    无数测试表明,WINDOWS SERVER 2003的CPU,内存,磁盘性能以及安全性,是远远超过WINDOWS XP的 并且相对于硬件要求恐怖的VISTA来说,在中低端PC上,2003的性能表现是远远超过VISTA的,在微软 新一代操作系统WINDOWS7...

    citrix 中文管理操作手册

    Microsoft SQL Server 2005 Express Edition 130 Oracle 130 IBM DB2 130 保护网络通信 130 保护客户端服务器通信 131 使用 SecureICA 132 启用 SSL/TLS 协议 132 配置会话数据加密 133 为 ICA 加密设置策略 134 ...

    ASP3《高级编程》(第一部分)

    10.4.3 利用SQL Server完成记录集分页 333 10.4.4 数据分页小结 336 10.5 使用数据库中的图像 337 10.6 小结 338 第11章 使用XML数据 339 11.1 XML的定义 339 11.1.1 XML和HTML的差别 340 11.1.2 标记和元素 ...

    ASP3《高级编程》(第二部分)

    10.4.3 利用SQL Server完成记录集分页 333 10.4.4 数据分页小结 336 10.5 使用数据库中的图像 337 10.6 小结 338 第11章 使用XML数据 339 11.1 XML的定义 339 11.1.1 XML和HTML的差别 340 11.1.2 标记和元素 ...

    教务系统设计数据库设计(1).doc

    采用优化的SQL查询算法可以有效地提高查询速度。 既能够作为一个单独的应用程序应用在客户端/服务器网络环境中,也能够作为一 个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG 5,日文的...

    C#编程经验技巧宝典

    51 <br>3.3 常见算法的实际应用 52 <br>0067 计算1+22+33+44+……+nn的值 52 <br>0068 计算10!的值 52 <br>0069 求最大公约数 52 <br>0070 求最小公倍数 53 <br>0071 判断素数的算法...

    教务系统设计数据库设计.doc

    采用优化的SQL查询算法可以有效地提高查询速度。 既能够作为一个单独的应用程序应用在客户端/服务器网络环境中,也能够作为一 个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB2312、BIG 5,日文的...

    盛行数字卡易购数字卡在线销售系统-综合版

    系统数据库采用Microsoft Sql Server 2000和Microsoft Sql Server 2005,进一步满足了平台高销售量的要求及大型企业级标准。该系统对比市场上常见的同类型销售系统来说,具有运行运算效率高、访问执行速度快、安全...

    盛行数字卡易购数字卡销售系统

    系统数据库采用Microsoft Sql Server 2000和Microsoft Sql Server 2005,进一步满足了平台高销售量的要求及大型企业级标准。该系统对比市场上常见的同类型销售系统来说,具有运行运算效率高、访问执行速度快、安全...

    POPNETSOFT游戏点卡在线销售平台

    系统数据库采用Microsoft Sql Server 2000和Microsoft Sql Server 2005,进一步满足了平台高销售量的要求及大型企业级标准。该系统对比市场上常见的同类型销售系统来说,具有运行运算效率高、访问执行速度快、安全...

    点卡ESALES在线销售系统 2008绿色奥运版

    系统数据库采用 <br>Microsoft Sql Server 2000和Microsoft Sql Server 2005,进一步满足了平台高销售量的要求及大型企业 <br>级标准。该系统对比市场上常见的同类型销售系统来说,具有运行运算效率高、访问...

Global site tag (gtag.js) - Google Analytics