在MSSQL中,如何找出哪个线程使用的CPU比较高
Tags: CPUCPU很高MSSQLSQL Server线程
名词解释:
spid:sql server中的每个进程都在一个服务器进程下运行。它们被称为session id。这些会话进程中的每一个都有一个唯一的id,称为 spid。从1开始,编号1到50是预留给系统用户的,不用于用户的连接。
kpid:spid位于sql server的上下文中。相同的进程在操作系统中作为内核进程运行。每个内核进程都有自己的id,称为kpid。在windows平台上,就是sqlserver的线程号。即thread id,由window在创建线程的时候分配
ecid:如果一个进程是多线程的,则所有子线程都具有相同的父服务器进程ID(SPID)。每个子线程都有自己的唯一标识符,称为ECID。
1.首先确定是否是sqlserver占用了cpu
通过任务管理器查看即可。
2.现在需要找出是SQLServer的线程占用了CPU
一旦找到kpid,就可以找到spid了。这里使用性能监视器来找对应的线程id。在windows的cmd窗口执行perfmon打开性能监视器,或者先登录控制面板,打开性能监视器
3.点击增加计数器,在下拉菜单中选择thread
同时选择以下计数器:
·% Processor Time
·ID Thread
·Thread State
·Thread Wait Reason
在右侧的面板,你可能会看到来自多个运行在同一服务器上的应用的多个实例。我们关注的是sqlserver,所以选择所有以sqlserver开头的实例。并点击添加。
你也可以根据需要添加别的计数器。
4.点击Ctrl+G,或者点击view report标签,从图形切换到报告视图。
可以看到类似下图的报告: