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、通过表分区,尽量降低因为添加索引而导致表插入较慢的影响
- 2015-10-1
- sql server 判断 null
- 阿里云sql server 2012(远程连接阿里云SqlServer 2012 数据库服务器的图文教程)
- sql server中cxpacket等待
- docker部署高性能服务器(Docker部署SQL Server 2019 Always On集群的实现)
- sqlserver怎么手动添加数据库表(SQL Server 数据库调整表中列的顺序操作方法及遇到问题)
- sql怎么写递归(sql server实现递归查询的方法示例)
- sql server证书配置(SQL Server Alwayson创建代理作业的注意事项详解)
- sqlserver判断条件输出字符(SQL Server查询条件IN中能否使用变量的示例详解)
- 数据库sql位置更换磁盘(SQL SERVER迁移之更换磁盘文件夹的完整步骤)
- sqlserver配置管理器不见了(SQL Server配置管理器无法连接到WMI提供程序)
- 查看SQL SERVER中某个查询用了多少TempDB空间
- sqlserver怎么查看数据库版本(Sql Server数据库各版本功能对比)
- sqlserver怎么写判断条件(SQL Server之SELECT INTO 和 INSERT INTO SELECT案例详解)
- 查sqlserver锁表语句(Sql Server如何查看被锁的表及解锁的方法)
- sqlserver2012知识点(SQL Server 2012 安全概述)
- 怎么快速学好英语(怎么快速学好英语初中)
- 中国留学生都是富二代吗()
- 我们现在吃的苹果是哪里来的 原来现代苹果引入中国仅有一百多年(我们现在吃的苹果是哪里来的)
- 买绿宝不能只挑黄绿色 菜农教你3招挑,个个皮薄肉脆,香甜爆汁(买绿宝不能只挑黄绿色)
- 大果肉搭配薄瓜皮, 绿宝 脆甜爽口,不愧是甜瓜中的 佼佼者(大果肉搭配薄瓜皮)
- 河南尉氏县因地制宜发展果蔬种植 水坡镇绿宝甜瓜变 金瓜(河南尉氏县因地制宜发展果蔬种植)
热门推荐
- html导航条下拉菜单代码(Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码)
- pythonselenium自动化教程(python使用selenium实现批量文件下载)
- 云服务器git(详解在阿里云上搭建自己的git服务器)
- 服务器怎么创建网站(网站如何选择服务器空间?)
- 存储过程中使用事务Transaction
- mysql创建数据库基本指令(MySql 新建用户与数据库的实际操作步骤)
- 阿里云服务器远程连不上(阿里云控制台重置密码重启后无法访问服务器的原因及解决方法)
- sublime text 安装package control,方便其它插件安装
- mysql 删除数据回收空间(浅谈为什么MySQL不建议delete删除数据)
- SQLServer获取临时表所有列名或是否存在指定列名的方法(SQLServer获取临时表所有列名或是否存在指定列名的方法)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9