检测SqlServer服务器CPU是否瓶颈
初次写博文,分享个人心得,欢迎大虾小虾来拍砖。
系统自带的性能监视器
在开始命令框中输入perfmon按enter键即可打开性能监视器
可以通过监视 % Processor Time 的值察看cpu是否遇到瓶颈,此值最好不要超出80%
如果达到了比较高的值也并不一定就是CPU的问题,一般来说CPU是不会有什么问题的,也有可能是IO,内存,程序本身的问题,CPU只是表相而已
可以用数据收集器定时收集
下面的语句可以查询出耗时最长的SQL语句
select top 50 *, (s.total_worker_time / s.execution_count) as avgworkertime from sys.dm_exec_query_stats s
cross apply sys.dm_exec_sql_text(s.sql_handle)
order by avgworkertime desc
单位是微秒
SqlServer ProFile监视
选择TSQL_Duration模板监视SQL语句执行时长,可以选择保存为文件或者数据库,可以设置监视时长,监视的结果可以根据数据库引擎优化顾问进行优化
数据库引擎优化顾问可以优化SQL文件,sqlserverprofile监视的文件或保存的数据表
在查询过程当中,编译查询计划是最为耗CPU的过程,以下可以查询出生成查询计划最多的SQL语句
select top 50 * from sys.dm_exec_query_stats q
cross apply sys.dm_exec_sql_text(q.sql_handle) t
order by q.plan_generation_num desc
尽可能的去优化这些SQL语句,以充分利用查询计划,可以大大提高查询效率
下面的语句可以查询出优化的结果
select * from sys.dm_exec_query_optimizer_info
占用时间 总优化次数 每次优化单个语句(查询)所用的平均时间(秒)。
elapsed time 11937503 0.140496722220612
SQL Statistics对象提供计数器来监视编译和发送到SQL Server实例的请求类型。必须通过监视查询编译和重编译的数量结合接收到的批处理数量来找出高CPU消耗是否是由编译引起。
理想情况下,SQL Recompilations/sec和Batch Requests/sec的比率应该应该非常低,除非用户提交的是即席查询。
关键数据:
SQLServer:SQL Statistics->Batch Requests/sec
SQL Server: SQL Statistics: SQL Compilations/sec
SQL Server: SQL Statistics: SQL Recompilations/sec
SQL Trace
如果性能计数器显示非常大的重编译数量,重编译可能正在造成高CPU消耗。接下来需要需要利用SQL Profiler纪录的trace来找出当时被重新编译的存储
过程。SQL Server Profiler trace可以给出这些信息连同重编译的原因。可以使用事件来获取这些信息。
SP: Recompile / SQL: StmtRecompile. The SP:Recompile and the SQL:StmtRecompile事件类显示哪些存储过程和语句曾经被重新编译过。当编译一个存储过程时,为存储过程和每一个被编译的语句生成事件。然而,当一个存储过程被重新编译时,只有引起重新编译的语句才会被生成一个事件(不同于SQL Server 2000中的整体存储过程编译)。
SP:Recompile事件类中的重要的数据列如下所示:
◆Event Class
◆EventSubClass
◆ObjectID(表示包含这个语句的存储过程)
◆SPID
◆Start Time
◆SqlHandle
◆TextData
EventSubClass数据列对于确定重编译原因来说非常重要。一旦过程或者触发器被重新编译,SP:Recompile就会被触发,但是有可能被重编译的即席批处理不会引发这个事件。 在SQL Server 2005中,监视SQL:StmtRecompiles时非常有用的,任何类型的批处理,即席查询,存储过程或者触发器被重编译时,这个事件类都会被触发。
保存trace文件,使用下面的查询来查看所有的重编译事件。
Select spid,starttime,textdata,eventsubclass,objected,databaseid,
sqlhandle from fn_trace_gettable (‘filepath.trc’,1) where EventClass in(37,75,166)
EventClass 37是SP:Recompile, 75是CursorRecompile, 166是SQL:StmtRecompile.
也可以进一步对这些查询结果根据Sqlhandle和ObjectID列进行分组来查看是否有某个存储过程存在大量的重编译或者由于其他原因导致的重编译(如Set选项变化)。
Showplan XML For Query Compile. 这个事件类在Microsoft SQL Server编译或者重新编译SQL语句时发生。这个事件中有关于被编译或者重编译的语句的信息。这些信息包括查询计划和存在问题的过程的Object ID。如果发现SQL Compilations/sec计数器数值很高,应该监视这个事件类。通过这些信息可以发现哪些语句被频繁的重编译。可以使用这些信息改变那些语句的参数。这应该会降低重新编译的次数。
转载于:https://www.cnblogs.com/gjhjoy/p/3253234.html
检测SqlServer服务器CPU是否瓶颈相关推荐
- sqlserver对cpu主频要求_记一次SQLServer服务器CPU飙升100%的处理
某集团一台sqlserver服务器,据系统管理员反应,经常会出现CPU飙到100%而且高居不下的情况,然后应用层会出现各种等待超时. 服务器配置:windows server 2008R2 x64 + ...
- 二手服务器cpu性能,二手服务器cpu当主机
二手服务器cpu当主机 内容精选 换一换 云手游服务器通过GPU硬件加速与图形接口支持,实现手游在云端运行效果,适用于手机游戏试玩推广.游戏智能辅助等场景.云手游服务器的CPU分为两类:Hi1616和 ...
- 用Core Temp查看服务器CPU温度
周末突然接到电话说大厦要停电30分钟,我担心空调在重新供电的时候无法自动启动,如果情况发生的话就麻烦了,必须立即回公司将机房空调启动才行.回到家后,我VPN进公司网络,想看看服务器的文档,但是发现系统 ...
- linux cpu不足处理运维,Linux运维知识之Linux服务器CPU占用率较高问题排查思路
本文主要向大家介绍了Linux运维知识之Linux服务器CPU占用率较高问题排查思路,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. 注意:本文相关配置及说明已在 CentOS ...
- 记一次阿里云服务器CPU长期100%发现被被种挖矿程序解决的过程(一摸一样,只是没查到怎么进来的,入侵)
centos 7 记一次阿里云服务器被被种挖矿程序解决的过程 1.原因 偶尔发现我的服务器CPU使用率长期处于100%,就登上服务器看了一下 2.查看进程 1 [root@izwz94xp1kwkca ...
- 华为服务器cpu位置,服务器cpu参数详解
服务器cpu参数详解 内容精选 换一换 设备实时状态查询是检测设备在运行过程中的状态信息.用户可任选以下指令之一查看设备实时状态查询命令的可用参数.ascend-dmi -i -hascend-dmi ...
- java 监控linux服务器cpu使用率、内存使用率、磁盘使用率、java进程是否存活等服务
java 监控linux服务器cpu.内存.java进程是否存活,发现异常发送邮件提醒 前一段时间在维护一个N年前的项目,这个项目有十几个服务器,每个服务器上有十几个服务.接手后的几个星期天天有事,要 ...
- sqlserver对cpu主频要求_SqlServer CPU篇及常用性能阈值
一. 常见的CPU报错 遇到这些错误时,SqlServer并发响应速度会受到影响,甚至整个服务响应都非常慢,影响业务. 1. 17883报错--某个scheduler可能有问题 如果sqlserver ...
- 百度网盘导致SqlServer占用CPU过高
我的SQLServer是装在自己电脑上的,不是专用的服务器. 经过排查,发现竟然是百度网盘客户端引起的. 此时并无下载任务,猜测是由于P2P分享,或者百度网盘客户端在升级. 退出百度网盘后,SQLSe ...
- 如何防止SQLserver服务器被黑?
如何防止SQLserver服务器被黑?请阅读以下技术文章: 一.基本安全设定: (1)文件系统的设定 windows2000server 支持多种文件系统,最安全的要数NTFS文件系统,如果你的win ...
最新文章
- centos7安装Oracle12(完整版)
- Win64 驱动内核编程-17. MINIFILTER(文件保护)
- matlab示波器显示部分,Matlab 示波器显示设置
- php未正确拼写字 css,前端Bug解决方案
- python笔记第二天
- python字典的键可以是元组吗_python字典的键可以是元组吗
- gis属性表怎么导成excel_将Excel数据导入到ArcGIS属性表
- 关于加载表格及模态框数据回填的Bug
- 如何在ubuntu中编写python_在ubuntu下使用visual studio code编写python
- 【深度学习】你该会的精选面试题(一)
- 计算机板卡设计仿真,电子技能训练(1-1)201492.ppt
- 计算机基础(06)计算机网络应用
- Kali Linux 如何使用 软件商店
- 技嘉ide模式怎么改_bios如何设置为ide兼容模式_怎么进入bios把硬盘模式改成ide
- 多多情报通:拼多多推广哪个效果好?有什么推广技巧?
- 【cvpr2022-论文笔记】《L2G: A Simple Local-to-Global Knowledge Transfer .... Semantic Segmentation》
- 尤里复仇退出界面_win10运行红警2尤里复仇的解决方法
- unity下载并和vs2019关联的步骤
- 《闲扯Redis九》Redis五种数据类型之Set型
- 鸿蒙系统基于Linux打造,其本质还是安卓系统?