sql server占cpu高
sql server占cpu高
sql server占cpu高一、sql server占cpu高的常见原因
1、编译和重编译
编译是 Sql Server 为指令生成执行计划的过程。Sql Server 要分析指令要做的事情,分析它所要访问的表格结构,也就是生成执行计划的过程。这个过程主要是在做各种计算,所以CPU 使用比较集中的地方。
执行计划生成后会被缓存在 内存中,以便重用。但是不是所有的都可以 被重用。在很多时候,由于数据量发生了变化,或者数据结构发生了变化,同样一句话执行,就要重编译。
2、排序(sort) 和 聚合计算(aggregation)
在查询的时候,经常会做 order by、distinct 这样的操作,也会做 avg、sum、max、min 这样的聚合计算,在数据已经被加载到内存后,就要使用CPU把这些计算做完。所以这些操作的语句CPU 使用量会多一些。
3、表格连接(Join)操作
当语句需要两张表做连接的时候,SQLServer 常常会选择 Nested Loop 或 Hash 算法。算法的完成要运行 CPU,所以 join 有时候也会带来 CPU 使用比较集中的地方。
4、Count(*) 语句执行的过于频繁
特别是对大表 Count(*) ,因为 Count(*) 后面如果没有条件,或者条件用不上索引,都会引起 全表扫描的,也会引起 CPU 的大量运算
二、sql server占cpu高的解决办法
1、紧急处理时,可以重启Sql Server 的服务,当然,如果 DB 是在线的 DB ,请谨慎此操作
2、2. 利用 SqlServer Profiler 来抓去语句,找出耗性能的SQL 语句,优化点。可以说,Sql 语句就好比 Sql server 的性能之匙,80 % 以上的 SQL SERVER 性能问题都是 SQL 语句引起的
3、查询前10个最耗CPU时间的SQL语句
--在SSMS里选择以文本格式显示结果
SELECT TOP 10
dest.[text] AS 'sql语句'
FROM sys.[dm_exec_requests] AS der
CROSS APPLY
sys.[dm_exec_sql_text](der.[sql_handle]) AS dest
WHERE [session_id]>50
ORDER BY [cpu_time] DESC
4、 查询CPU占用高的语句
SELECT TOP 10
total_worker_time/execution_count AS avg_cpu_cost, plan_handle,
execution_count,
(SELECT SUBSTRING(text, statement_start_offset/2 + 1,
(CASE WHEN statement_end_offset = -1
THEN LEN(CONVERT(nvarchar(max), text)) * 2
ELSE statement_end_offset
END - statement_start_offset)/2)
FROM sys.dm_exec_sql_text(sql_handle)) AS query_text
FROM sys.dm_exec_query_stats
ORDER BY [avg_cpu_cost] DESC
5、查看占用CPU高的SQL语句的执行计划,找出占用高的原因
例如
6、选择top记录时,尽量为order子句的字段建立索引
7、通过建立包含索引来让SQL语句走索引
三、sql server占cpu高的总结
1、服务器CPU过高,首先查看系统进程,确定引发CPU过高的进程
2、通过SQLServer Profiler能够轻易监控到哪些SQL语句执行时间过长,消耗最多的CPU
3、通过SQL语句是可以查看每条SQL语句消耗的CPU是多少
4、导致CPU高的都是进行大量计算的语句:包括内存排序、表扫描、编译计划等。
5、如果使用Top刷选前面几条语句,则尽量为Order By子句建立索引,这样可以减少对所有的刷选结果进行排序
6、使用Count查询记录数时,尽量通过为where字句的相关字段建立索引以减少表扫描。如果多个表进行join操作,则把相关的表连接字段建立在包含索引中
7、通过服务端通知的方式,减少SQL语句的查询
8、通过表分区,尽量降低因为添加索引而导致表插入较慢的影响
- sql server日志文件过大怎么办
- sql server中check约束
- sqlserver的图形表(SQL Server纵表与横表相互转换的方法)
- sqlserver模糊查询使用定义的字段(SQL Server模糊查询的常见方法总结)
- 阿里云sql server 2012(远程连接阿里云SqlServer 2012 数据库服务器的图文教程)
- sql server支持两种登录验证方式(远程登陆SQL Server 2014数据库的方法)
- sqlserver常用配置调整(sql server性能调优 I/O开销的深入解析)
- sql server案例(SQL Server作业报错特殊案例分析)
- 无法启动sql serveragent(SQL Agent服务无法启动的解决方法)
- sql server导入数据csv文件(大容量csv快速内导入sqlserver的解决方法推荐)
- mysql server安装图解教程(mysql容器之间的replication配置实例详解)
- sqlserver表分区缺点(SQL Server 公用表表达式CTE实现递归的方法)
- sql server代理无法启动服务(SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法)
- sqlserver访问远程数据库(SQL Server实现跨库跨服务器访问的方法)
- Sql Server系统数据库的作用
- 循环查询sql server(SQL Server 树形表非循环递归查询的实例详解)
- 赵丽颖第一部当女主的戏,主角配角个个都是实力演员(赵丽颖第一部当女主的戏)
- 乾隆为何这么喜爱白塔原因是什么(乾隆为何这么喜爱白塔原因是什么)
- 逐渐消失的东北八大怪现象,进步的社会里我们遗失的是什么(逐渐消失的东北八大怪现象)
- 今日大雪,大雪养生这样做,一年都有好气色(大雪养生这样做)
- 粗盐是什么 粗盐的功效与作用(粗盐的功效与作用)
- 会 吃人 的客机 从天堂到地狱只需5分钟,图-104如何做到(会吃人的客机)
热门推荐
- 怎么调用dede自定义表单(DEDE模板中如何使用if进行多分支判断的教程)
- tensorflow自定义初始化(Tensorflow分类器项目自定义数据读入的实现)
- css 中border基本语法(详解CSS的border边框属性及其在CSS3中的新特性)
- python2.7中logging的使用方式(Python中使用logging和traceback模块记录日志和跟踪异常)
- mysql出现锁表的原因(导致MySQL做全表扫描的几种情况)
- docker中搭建jmeter测试环境(借助Docker搭建JMeter+Grafana+Influxdb监控平台的详细教程)
- zabbix监控网络线路(分布式监控系统之Zabbix 使用SNMP、JMX信道采集数据的原理解析)
- sqlserver基础数据类型(SQL Server中T-SQL 数据类型转换详解)
- ASP.NET压缩图片
- dedecms中的有些功能如何修改(dedecms 每个栏目下的文章总数的调用)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9