最近公司数据库同步机制常发生阻塞,时不时的导致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套用数据即可实现)

 
 
 四.阻塞进程数据源
       通过此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 '' WHEN ChildCount > 0 THEN '' ELSE '' END) +', name: '''+ CAST(spid AS VARCHAR(1000))
+''', value : '+ (CASE WHEN PerentCount = 0 THEN '' WHEN ChildCount > 0 THEN '' ELSE '' 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
 

PCB SQL SERVER 数据库阻塞进程关系以思维导图方式呈现的实现方法的更多相关文章

  1. Python的进程与线程--思维导图

    Python的进程与线程--思维导图

  2. SQL Server数据库阻塞,死锁查询

    sql 查询卡顿数据库 SELECT SPID=p.spid, DBName = convert(CHAR(20),d.name), ProgramName = program_name, Login ...

  3. 快速定位MS Sql Server 数据库死锁进程

    最近在做一个大型项目,由于数据设计采用离散型数据库设计,以方便需求变更及用户自定义流程要素,因为要素用户自定义,数据完整性靠代码约束变得不太现实,只能依靠表间关系来约束,结果因此导致数据的操作经常产生 ...

  4. MS SQL Server数据库修复/MDF数据文件数据恢复/MDF质疑/mdf无法附加

    微软的SQL Server 数据库最常用的有两种类型的文件: 1.主要数据文件,文件后缀一般是.MDF: 2.事务日志文件,文件后缀一般是.LDF. 用户数据表.视图.存储过程等等数据,都是存放在MD ...

  5. 转载 50种方法优化SQL Server数据库查询

    原文地址 http://www.cnblogs.com/zhycyq/articles/2636748.html 50种方法优化SQL Server数据库查询 查询速度慢的原因很多,常见如下几种: 1 ...

  6. C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用

    C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备)  https://blog.csdn.net/u013519551/article/details/51220841 1. . ...

  7. 5、SQL Server数据库、T-SQL

    SQL Server数据库基础 一.安装SQL Server数据库 setup.exe->安装->全新SQL Server独立安装或向现有安装添加功能->输入序列号->下一步- ...

  8. 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)

    前言 本篇主要是上一篇文章的补充篇,上一篇我们介绍了SQL Server服务启动过程所遇到的一些问题和解决方法,可点击查看,我们此篇主要介绍的是SQL Server启动过程中关于用户数据库加载的流程, ...

  9. SQL Server 数据库中关于死锁的分析

    SQL Server数据库发生死锁时不会像Oracle那样自动生成一个跟踪文件.有时可以在[管理]->[当前活动] 里看到阻塞信息(有时SQL Server企业管理器会因为锁太多而没有响应). ...

随机推荐

  1. mysql的命令行安装,忘记密码,密码重置问题

    1.下载,安装msi 2.在MYSQL安装目录下,新建data目录 3.进入MYSQL的安装目录下,新建一个默认配置文件my.ini [mysql] # 设置mysql客户端默认字符集 default ...

  2. vs2017 cordova调试ios app

    https://docs.microsoft.com/en-us/visualstudio/cross-platform/tools-for-cordova/first-steps/ios-guide ...

  3. asp.net文件流下载的代码摘要

    try { var workbook = new XLWorkbook(); if (Workbook != null) { workbook = Workbook; } if (this.Expor ...

  4. C# GetFiles

    var path = AppDomain.CurrentDomain.BaseDirectory + "Images\\Rooms\\"; // string[] patterns ...

  5. WPF 在一个dll创建一个Window(包含xaml),在另一个dll中再次继承 会出错

    https://social.msdn.microsoft.com/Forums/vstudio/en-US/e92390eb-bbfa-42fb-baa9-2286444c0dca/the-comp ...

  6. DBShop 电子商务网店系统

    DBShop 电子商务网店系统,采用业界知名框架 ZendFramework 2 开发而成. 下面为功能简介 1.在线更新:在线系统更新和在线模板安装与更新,简单.方便.快捷,省却了手动更新的繁琐步骤 ...

  7. Window文件目录遍历 和 WIN32_FIND_DATA 结构(非常详细的中文注释)

    第一部分     *百度百科提供的内容总结:WIN32_FIND_DAT 第二部分   *程序实例 第三部分   *一篇使用FindFirstFile和FindNextFile函数的博文   第一部分 ...

  8. Qt 使用 Google Breakpad 捕获程序崩溃报告(dump文件) good

    http://blog.csdn.net/GoForwardToStep/article/details/56685810

  9. 开源中国的 IT 公司开源软件整理计划介绍

    直击现场 <HTML开发MacOSApp教程>  http://pan.baidu.com/s/1jG1Q58M 开源中国的 IT 公司开源软件整理计划介绍 oschina 发布于: 20 ...

  10. Qt使用MinGW编译,如何忽略警告

    Qt编译时经常出现以下警告: warning: unused parameter 'arg1' [-Wunused-parameter] warning: unused variable 'i' [- ...