婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > sql server deadlock跟蹤的4種實現方法

sql server deadlock跟蹤的4種實現方法

熱門標簽:奧威地圖標注多個地方 優質地圖標注 怎樣在地圖上標注路線圖標 外呼系統電銷專用 武漢長沙外呼系統方法和技巧 智能語音外呼系統選哪家 京華物流公司地圖標注 百度地圖標注不同路線 千呼電銷機器人價格

前言

最近寫程序常會遇到deadlock victim,每次一臉懵逼。研究了下怎么跟蹤,寫下來記錄下。文中介紹的非常詳細,對大家具有一定的參考學習價值,下面話不多說了,來一起看看詳細的介紹吧

建測試數據

CREATE DATABASE testdb;
 
GO
 
USE testdb;
 
CREATE TABLE table1
(
id INT IDENTITY PRIMARY KEY,
student_name NVARCHAR(50)
 
)
 
INSERT INTO table1 values ('James')
INSERT INTO table1 values ('Andy')
INSERT INTO table1 values ('Sal')
INSERT INTO table1 values ('Helen')
INSERT INTO table1 values ('Jo')
INSERT INTO table1 values ('Wik')
 
 
CREATE TABLE table2
(
id INT IDENTITY PRIMARY KEY,
student_name NVARCHAR(50)
 
)
 
INSERT INTO table2 values ('Alan')
INSERT INTO table2 values ('Rik')
INSERT INTO table2 values ('Jack')
INSERT INTO table2 values ('Mark')
INSERT INTO table2 values ('Josh')
INSERT INTO table2 values ('Fred')

第一段sql,先運行只更新table1部分

USE testdb;
 
-- Transaction1
BEGIN TRAN
 
UPDATE table1
SET student_name = student_name + 'Transaction1'
WHERE id IN (1,2,3,4,5)
 
UPDATE table2
SET student_name = student_name + 'Transaction1'
WHERE id = 1
 
COMMIT TRANSACTION

第二段sql,只運行更新table2部分

USE testdb;
 
-- Transaction2
BEGIN TRAN
 
UPDATE table2
SET student_name = student_name + 'Transaction2'
WHERE id = 1
 
UPDATE table1
SET student_name = student_name + 'Transaction2'
WHERE id IN (1,2,3,4,5)
 
COMMIT TRANSACTION

再運行,第一段sql更新table2,運行第二段sql更新table1,死鎖問題重現。

說下跟蹤死鎖的方法:

1.使用trace log跟蹤,執行如下sql開啟1222和1204 flag,死鎖信息會在sql server 日志中輸出。

DBCC TRACEON (1204, -1)
DBCC TRACEON (1222, -1)

下圖是1204輸出的信息

下圖是1222輸出的信息

2.使用sql server profiler進行跟蹤

點擊Tools -> sql server profiler 選擇sql locks模板

運行當發生死鎖時會自動捕獲,點擊dead lock paragraph查看死鎖

3.使用擴展事件跟蹤,方法只適用于sql server 2012版本,08r2版本無法直接使用。

依次點擊Management -> Extended Events - >system health - >package0.event_file

輸入deadlock回車,可以點擊details 把內容另存為xdl文件再打開,或點擊deadlock查看圖

4.使用windows性能計數器檢測到死鎖再去sql中查詢

命令行輸入:perfmon 或者 perfmon /sys

選擇實例:SQL Server :Locks \\ Number of DeadLocks/sec \\ _Total

實時查看:

下面的查詢提供了自從上次重啟以來在本服務器上發生的所有死鎖:

SELECT cntr_value AS NumOfDeadLocks

FROM sys.dm_os_performance_counters

WHERE object_name = 'SQLServer:Locks'

AND counter_name = 'Number of Deadlocks/sec'

AND instance_name = '_Total'

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • 防止SQLSERVER的事件探查器跟蹤軟件
  • 如何控制SQLServer中的跟蹤標記
  • DBA應該知道的一些關于SQL Server跟蹤標記的使用

標簽:益陽 七臺河 宿州 威海 銅仁 來賓 天水 防疫戰設

巨人網絡通訊聲明:本文標題《sql server deadlock跟蹤的4種實現方法》,本文關鍵詞  sql,server,deadlock,跟蹤,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《sql server deadlock跟蹤的4種實現方法》相關的同類信息!
  • 本頁收集關于sql server deadlock跟蹤的4種實現方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 漯河市| 高清| 巴中市| 黔西县| 区。| 葫芦岛市| 深泽县| 鄂托克前旗| 邮箱| 美姑县| 玛多县| 霍城县| 水富县| 桃源县| 兴山县| 桦甸市| 泸定县| 惠安县| 金秀| 邵阳县| 隆尧县| 绩溪县| 延长县| 新和县| 甘孜| 玉环县| 拜城县| 横峰县| 分宜县| 富裕县| 绿春县| 石泉县| 木兰县| 中山市| 林甸县| 华安县| 延长县| 高陵县| 深水埗区| 偏关县| 宁化县|