最近、会社のデータベースの同期機構ブロッキングが時折PCBエンジニアリングシステムスタック現象が生じ、頻繁に発生する、唯一の閉塞の原因を見つけるためにのみ障害物を排除するために、処分されますが、セッションを表示するには、データベースは、親子の会話のプロセスIDを表示し、二次元の表の途中でブロックされています明らかに、各セッションのプロセスIDの関係図を表示することは困難です。
例えば:それは私たちが前方に運転し、道路上の車のようなものだ、あなたの前に車をブロックし、交通渋滞の前で会ったが、車の後部に行ってきました、あなたは車の障害物の後ろでなければなりません。
それは、マインドマップへの完璧な方法は、ことを示すことができるならば、我々は非常に迅速に限り、ソースが開いたままに道を開いたとして、この図によって、はんだプラグの源を探していないことができます。
他の関連するSQL文をブロックA.
現在のデータベースのクエリがブロックされました:
選択 * から sys.sysprocesses ブロックさ> < 0
SQLクエリは、実行状態の実装でセッションをブロック:
選択 * から sys.sysprocesses SPID = 197
すべてのDBライブラリを実行するためにセッションを遮断するクエリ
選択 * から sys.sysdatabases DBID = 7
たsql_handleハンドルによって実行されているテキストの内容を照会するSQL_TEXT SQL、SQLの内容:
SELECT * FROM :: FN_GET_SQL(0x0300FF7F587A2F063508ED005E9B000001000000)
プロセスのセッションIDを削除します。
KILL 197
II。効果を示す工程マインドマップをブロック----
ショーによって示されるように、非常に明確にプロセスIDからプロセスをブロックするソース知っている[源:セッションIDデータベース全体をブロック536件の結果]
三の.HTMLの実装コード
echar百度と自宅を実装:( HTMLコード)は、データが実現することができます適用されます
IV。プロセスデータソースをブロックします
SQLデータ部分を通って取られた2
1.EChartノードデータノード
リレーショナルデータを関連2.EChartリンク
--查询当前数据库阻塞进程插入临时表 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