SQLServer 定位CPU使用较高的用户和SQL
2015-12-03 12:23
471 查看
CPU 高的时候有很多方法定位,以下是一种比较慢的定位方法,不过本人也不会这样跟踪。实例如下:
首先确认高CPU是数据库内部消耗还是Windows其他应用程序消耗较高CPU。打开Windows 任务管理器可以确定哪个进程消耗高CPU。
确定是 sqlserver 实例内部消耗的CPU,打开性能计数器跟踪。
cmd——》perfmon——》选择计数器对象 thread ——》选择 % Processor Time、ID Process 、ID Thread——》对象实例选择所有的sqlserver/XX——》确定!
选择高亮,点击最高的线条,或者逐行查看sqlserver 线程的% Processor Time,确定为 51
找到 ID Thread 为 51的,查看其值为2252,即为线程ID。
到数据库中查看系统表 sys.sysprocesses ,kpid为2252的连接,可以看多执行的状态和对象信息。
查看执行语句:
可以确定执行了什么语句,即可进行相关优化。或者对该登录连接进行相关操作。
本人一般直接查看当前请求的连接:
首先确认高CPU是数据库内部消耗还是Windows其他应用程序消耗较高CPU。打开Windows 任务管理器可以确定哪个进程消耗高CPU。
确定是 sqlserver 实例内部消耗的CPU,打开性能计数器跟踪。
cmd——》perfmon——》选择计数器对象 thread ——》选择 % Processor Time、ID Process 、ID Thread——》对象实例选择所有的sqlserver/XX——》确定!
选择高亮,点击最高的线条,或者逐行查看sqlserver 线程的% Processor Time,确定为 51
找到 ID Thread 为 51的,查看其值为2252,即为线程ID。
到数据库中查看系统表 sys.sysprocesses ,kpid为2252的连接,可以看多执行的状态和对象信息。
SELECT spid, kpid, dbid, cpu, lastwaittype,status,loginame FROM sys.sysprocesses WHERE spid=55
查看执行语句:
DBCC INPUTBUFFER(55)
可以确定执行了什么语句,即可进行相关优化。或者对该登录连接进行相关操作。
本人一般直接查看当前请求的连接:
SELECT sp.[kpid], der.[session_id], der.[request_id], der.[start_time], der.[status], der.[command], dest.[text], DB_NAME(der.[database_id]) [database], der.[blocking_session_id], der.[wait_type] , der.[wait_time], der.[wait_resource], der.[reads], der.[writes] , der.[logical_reads], der.[row_count], sp.lastwaittype,sp.hostname,sp.program_name,sp.loginame,sp.cmd FROM sys.[dm_exec_requests] AS der INNER JOIN master.dbo.sysprocesses AS sp on der.session_id=sp.spid CROSS APPLY sys.[dm_exec_sql_text](der.[sql_handle]) AS dest WHERE [session_id]>50 AND session_id<>@@SPID AND der.[database_id]=DB_ID() ORDER BY [cpu_time] DESC
相关文章推荐
- Mysql存储过程
- MongoDB使用记录
- redis 类
- MongoDB shell原子性更新修改器的应用
- iOS开发数据库篇—FMDB简单介绍
- sqlserver 内置函数
- mysql分表和表分区详解
- MyBatis SQL xml处理小于号与大于号
- redis rdb流程和相关函数逻辑
- oracle DBlink的使用
- SQL 语句中按照in语句原有的顺序进行排序
- ora-12505错误解决,以及查找oracle安装目录
- SQL 分类条件统计
- 数据库连接的问题
- Oracle从文件系统迁移到ASM存储
- CoreData数据库升级
- 四种类型的Oracle索引扫描
- MySql 各类引擎
- 注意事项: Oracle Not Exists 及 Not In 使用
- MYSQL 性能优化