91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-30 10:04:42 來源:腳本之家 閱讀:161 作者:Code Dog 欄目:數據庫

前言

最近寫程序常會遇到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,死鎖問題重現。

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

說下跟蹤死鎖的方法:

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

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

下圖是1204輸出的信息

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

下圖是1222輸出的信息

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

2.使用sql server profiler進行跟蹤

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

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

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

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

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

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

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

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

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

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

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

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

實時查看:

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

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

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'

總結

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

佛坪县| 嘉峪关市| 益阳市| 昔阳县| 阿拉善右旗| 衡阳县| 葵青区| 吉水县| 长武县| 偏关县| 启东市| 惠安县| 江孜县| 永昌县| 远安县| 新邵县| 资源县| 新安县| 荆州市| 英山县| 安吉县| 余姚市| 梅河口市| 监利县| 凤阳县| 齐齐哈尔市| 阜新| 湘乡市| 鄂温| 三亚市| 辉南县| 金平| 新昌县| 望谟县| 准格尔旗| 石屏县| 临泉县| 金阳县| 庄河市| 汝阳县| 枣阳市|