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

简介: PCB SQL SERVER 数据库阻塞进程关系以思维导图方式呈现的实现方法 最近公司数据库同步机制常发生阻塞,时不时的导致PCB工程系统卡死现象,只有找到阻塞源头并处理掉,才以消除阻塞,但数据库中查看会话阻塞是通过二维表方式展示的父子会话进程ID的,是很难清楚的展示各会话进程ID的关系图的。

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

        最近公司数据库同步机制常发生阻塞,时不时的导致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
复制代码

作者:pcbren

QQ交流群:PCB之脚本也泛滥

博客地址:https://www.cnblogs.com/pcbren/

声明:本博客原创文字只代表本人工作中在某一时间内总结的观点或结论,与本人所在单位没有直接利益关系。非商业,未授权,贴子请以现状保留,转载时必须保留此段声明,且在文章页面明显位置给出原文连接。

如果大家感觉我的博文对大家有帮助,请推荐支持一把。

相关文章
|
8月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1427 152
|
8月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
1036 156
|
8月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
713 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
7月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
403 6
|
8月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
SQL Oracle 关系型数据库
本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库
本机不安装Oracle客户端,使用PL/SQL Developer连接远程数据库
1156 0
|
SQL 开发框架 .NET
ASP.NET连接SQL数据库:详细步骤与最佳实践指南ali01n.xinmi1009fan.com
随着Web开发技术的不断进步,ASP.NET已成为一种非常流行的Web应用程序开发框架。在ASP.NET项目中,我们经常需要与数据库进行交互,特别是SQL数据库。本文将详细介绍如何在ASP.NET项目中连接SQL数据库,并提供最佳实践指南以确保开发过程的稳定性和效率。一、准备工作在开始之前,请确保您
958 3
|
10月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
758 0
Java连接SQL Server数据库的详细操作流程
Java连接SQL Server数据库的详细操作流程
|
SQL 开发框架 .NET
ASP连接SQL数据库:从基础到实践
随着互联网技术的快速发展,数据库与应用程序之间的连接成为了软件开发中的一项关键技术。ASP(ActiveServerPages)是一种在服务器端执行的脚本环境,它能够生成动态的网页内容。而SQL数据库则是一种关系型数据库管理系统,广泛应用于各类网站和应用程序的数据存储和管理。本文将详细介绍如何使用A
588 3