sp_block查看数据库进程状态(是否阻塞,执行SQL等),可替代sp_who
来源:互联网 发布:java 注解开发 编辑:程序博客网 时间:2024/05/22 14:04
写这个存储过程的初衷就是当有业务部门反映系统慢时,能快速知道数据库是否有阻塞,blocking其他进程的SQL是什么。后来又有一个需求想实现:在停止数据库服务之前,能快速知道数据库当前运行着什么SQL,以决定是否可以立即停止数据库,还是需要等某些SQL运行完。
写完这个存储过程,几经更改,在使用过程中,发现这个存储过程确实非常方便和好用,故分享给大家,希望对大家有用,也欢迎大家多提建议。
总结下这个存储过程的用途:
1,查看数据库是否有阻塞;哪些进程在阻塞和被阻塞;阻塞了多少个进程和阻塞了多长时间?阻塞的SQL是什么?这个SQL当时的执行计划是什么?
2,查看进程的常规信息,例如什么帐户登录,使用了哪个数据库,客户端名称和ip地址?
3,查看进程运行状态,等待类型,等待资源,消耗的cpu,read,write等。
4,通过查询全局临时表,可以统计当前服务器有多少个login在运行,多少个客户端在连接等。
5,作为自动杀阻塞进程的sp的调用子sp。(这个后续推出)
一些注释说明:
1,为防止执行时间过长,仅显示blocking进程的执行计划。如果使用SQL Server2008的ssms,可以直接点击查询结果中的数据查看到图形化的执行计划;
2,系统进程被阻塞,也会显示;(这个未经过充分验证)
3,session_status 有时不匹配request_status,原因:存在脏读;或读取时间不一致
4,当前自己进程的信息不显示(即执行这个sp的窗口),除非这个进程阻塞了其他进程;
5,不论@status输入参数如何,blocking和blocked总是显示,可以用此特性只显示blocking和blocked
结果集的一些说明:
1,blocking_spid: 阻塞其他进程的进程号,如果某个进程正在阻塞其他进程,这个列显示为:kill spid,否则会显示被阻塞的层次关系;
2,blocked_count: 本进程阻塞其他进程的个数;
3,blocked_time: 本进程阻塞其他进程的最长时间;
下面是调用的函数:
- sp_block查看数据库进程状态(是否阻塞,执行SQL等),可替代sp_who
- sp_who查看sql的进程
- MS SQL 执行过程中执行状态,可查看当前正在执行的sql等信息
- Oracle查看进程执行sql
- Oracle查看进程执行sql
- 查看当前SQL执行,包括执行状态
- SQL SERVER 查看数据库状态
- 查看数据库sql执行效率
- oracle 查看进程执行的sql语句
- 查看SQL SERVER 数据库正在执行的语句和时长等
- Oracle数据库查看一个进程是如何执行相关的实际SQL语句
- 在SQL2000、SQL2005查看阻塞进程的SQL脚本
- Transact-SQL参考:sp_who
- Oracle一些常用查看数据库状态SQL
- Oracle一些常用查看数据库状态SQL
- 查看SQL数据库日志空间使用状态
- ps命令(查看进程号,状态等)
- 查看Oracle数据库SQL执行历史
- sizeof运算符计算数组长度
- 网络中的端口收集【供自己备忘,同时也能给别人提供点点方便】
- 这断代码如何改成默认为关闭的而不是展开的
- FLEX实践—弹出窗口、滚动字幕
- 理解Javascript闭包(closure)
- sp_block查看数据库进程状态(是否阻塞,执行SQL等),可替代sp_who
- IMPORT EXPORT
- Visual Studio 2010 Beta 2软件界面
- 一无所有时,靠什么成功?
- 智能视频分析技术与被动红外技术的整合应用
- 配置oracle10g oem中的主机身份证明的方法
- 编码人员和美工的配合问题
- 皕杰报表关于单元格的尺寸调整
- 一键把桌面,收藏夹,我的文档设置到D盘,E盘,F盘或者其他盘