PCB SQL SERVER 数据库阻塞进程关系以思维导图方式呈现的实现方法
2019-07-19 00:31
1601 查看
最近公司数据库同步机制常发生阻塞,时不时的导致PCB工程系统卡死现象,只有找到阻塞源头并处理掉,才以消除阻塞,但数据库中查看会话阻塞是通过二维表方式展示的父子会话进程ID的,是很难清楚的展示各会话进程ID的关系图的。
举例:这好比公路上的汽车我们开车前行,遇到前方塞车了,前方的车阻塞你,但后方又继续来车,你也成为后方的车阻塞者。
如果能以思维导图的方式展示那不完美了,我们可以通过此图可很快的找找到阻焊塞的源头,只要把源头打通,道路才能保持畅通。
一.阻塞查询相关SQL语句
查询当前数据库阻塞:
select * from sys.sysprocesses where blocked<>0查询阻塞的会话在执行的SQL以及运行状态:
select * from sys.sysprocesses where spid=197
查询阻塞会话执行所有DB库
select * from sys.sysdatabases WHERE dbid = 7通过sql_handle句柄来查询正在跑的SQL的SQL_TEXT文本内容,即SQL内容:
SELECT * FROM ::FN_GET_SQL(0x0300FF7F587A2F063508ED005E9B000001000000)
删除进程会话ID
KILL 197
二.阻塞进程思维导图----展示效果
通过如图展示,非常清楚的知道阻塞进程源头来自哪个进程号了【源头:会话进程ID 536导致整个数据库阻塞】
三.HTML实现代码
HTML实现代码:(用百度他们家的echar套用数据即可实现)
http://pcbren.cn/DB_BlockedView.html 四.阻塞进程数据源 通过此SQL取出2部份数据 1.EChart nodes 节点数据 2.EChart links 关连关系数据--查询当前数据库阻塞进程插入临时表 select * INTO #sysprocesses FROM sys.sysprocesses where blocked<>0 --获取进程节点【数据给到EChart nodes】 --将数据按3个等级分类,按实例图展示效果 SELECT ' {category:'+ (CASE WHEN PerentCount = 0 THEN '0' WHEN ChildCount > 0 THEN '1' ELSE '2' END) +', name: '''+ CAST(spid AS VARCHAR(1000)) +''', value : '+ (CASE WHEN PerentCount = 0 THEN '3' WHEN ChildCount > 0 THEN '2' ELSE '1' END) + '},' FROM ( SELECT (SELECT COUNT(1) FROM #sysprocesses WHERE blocked = t.spid) ChildCount ,(SELECT COUNT(1) FROM #sysprocesses WHERE spid = t.spid) PerentCount ,spid FROM ( SELECT spid spid FROM #sysprocesses UNION ALL SELECT blocked spid FROM #sysprocesses ) t GROUP BY spid ) t --获取节点之前的关连关系【数据给到EChart links】 SELECT '{source : '''+ CAST(spid AS VARCHAR(1000)) +''', target : '''+ CAST(blocked AS VARCHAR(1000))+''', weight : 1},' FROM #sysprocesses drop table #sysprocesses
相关文章推荐
- 对象的继承关系在数据库中的实现方式和PowerDesigner设计
- JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法
- Java第七课 Java的多线程程序进程和线程的概念,实现多线程的两种方式,线程同步的原理,线程的死锁,运用wait和notify来实现producer - consumer关系,线程终止的两种情况。
- SQL SERVER 2008 利用发布订阅方式实现数据库同步
- 对象的继承关系在数据库中的实现方式和PowerDesigner设计
- SQL SERVER 2008 利用发布订阅方式实现数据库同步
- Oracle 数据库的连接方式实现方法
- sql server 利用发布订阅方式实现数据库同步问题
- JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法
- SQL SERVER 2008 利用发布订阅方式实现数据库同步
- VC6.0 ADO方式连接远程计算机的SQL Server 2000数据库的方法
- 对象的继承关系在数据库中的实现方式和PowerDesigner设计
- sql server 数据库同步时如果出现 进程未能读取文件 因为发生操作系统错误 5。解决方法:
- sql server 2000数据库 最近经常出现某进程一直占用资源,阻塞?死锁?
- 数据、进程-云计算学习笔记---Hadoop简介,hadoop实现原理,NoSQL介绍...与传统关系型数据库对应关系,云计算面临的挑战-by小雨
- 对象的继承关系在数据库中的实现方式和PowerDesigner设计
- Hibernate基于注解方式配置来实现实体和数据库之间存在某种映射关系
- SQL Server创建数据库和数据表的相关约束实现方法
- 对象的继承关系在数据库中的实现方式和PowerDesigner设计
- 对象的继承关系在数据库中的实现方式和PowerDesigner设计