sql server 性能调优之 当前用户请求分析 (1)
一. 概述
在生产数据库运行期间,有时我们需要查看当前用户会话状态或者是说数据库当前是否运行良好, 应用的场景比如:当运行的应用系统响应突然变慢时需要分析数据库的、或想分析当前的数据库是否繁忙,是否有长时间的等待, 又或者执行一个sql的回滚状态查看,想手动kill掉一个会话时 等等。都需要从当前的会话状态去分析。
这篇主要介绍sys.sysprocesses 函数,这里面包含了当前用户大量的信息,如会话进程有多少,等待时间,open_tran有多少事务,阻塞会话是多少等 整体内容更为详细是一个分析当前会话状态比较好的切入点。
SELECT * FROM sys.sysprocesses
下面先来介绍来函数的字段说明,字段很多一个个来详细介绍下,了解了含义后,后面来案例分析:
字段名称 |
说明 |
spid 会话ID(进程ID) |
SQL内部对一个连接的编号,一般来讲,小于50,如果用户连接的编号,大于50 |
blocked 阻塞ID |
阻塞的进程ID, 值大于0表示阻塞, 值为本身进程ID表示io操作 如果blocked>0,但waittime时间很短,说明阻塞时间不长,不严重
|
waitresource 等待资源 |
格式为 fileid:pagenumber:rid 如(5:1:8235440) |
kipid 线程ID |
当kpid值为不0时,代表当前是活动用户 kpid=0, waittime=0 空闲连接 kpid>0, waittime=0 运行状态 kpid>0, waittime>0 需要等待某个资源,才能继续执行,一般会是suspended(等待io) kpid=0, waittime=0 但它还是阻塞的源头,查看open_tran>0 事务没有及时提交
|
waittime |
当前等待时间(以毫秒为单位) |
open_tran |
进程的打开事务数 |
hostname |
建立连接的客户端工作站的名称 |
program_name |
应用程序的名称 |
hostprocess |
工作站进程 ID 号 |
loginame |
登录名 |
status |
running = 会话正在运行一个或多个批 如果status 上有好几个runnable状态任务,需要认真对待。 cpu负荷过重没有及时处理用户的并发请求 |
其它字段信息查看msdn
1.1 查看用户会话信息
select * from sys.sysprocesses where spid>50
1.2 查看活动用户信息
SELECT spid,kpid,blocked ,waittime AS 'waitms', lastwaittype, DB_NAME(dbid), waitresource, open_tran,hostname,[program_name],hostprocess,loginame, [status] FROM sys.sysprocesses WITH(NOLOCK) WHERE kpid>0 AND [status]<>'sleeping' AND spid>50 ORDER BY waittime DESC
1.3 查看用户阻塞会话信息
SELECT spid,kpid,blocked ,waittime AS 'waitms', lastwaittype, DB_NAME(dbid), waitresource, open_tran,hostname,[program_name],hostprocess,loginame, [status] FROM sys.sysprocesses WITH(NOLOCK) WHERE blocked>0 AND spid>50 ORDER BY waittime DESC
1.4 查看系统会话信息
select * from sys.sysprocesses where spid<=50
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具