濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > sql server deadlock跟蹤的4種實(shí)現(xiàn)方法

sql server deadlock跟蹤的4種實(shí)現(xiàn)方法

熱門(mén)標(biāo)簽:奧威地圖標(biāo)注多個(gè)地方 優(yōu)質(zhì)地圖標(biāo)注 怎樣在地圖上標(biāo)注路線圖標(biāo) 外呼系統(tǒng)電銷(xiāo)專(zhuān)用 武漢長(zhǎng)沙外呼系統(tǒng)方法和技巧 智能語(yǔ)音外呼系統(tǒng)選哪家 京華物流公司地圖標(biāo)注 百度地圖標(biāo)注不同路線 千呼電銷(xiāo)機(jī)器人價(jià)格

前言

最近寫(xiě)程序常會(huì)遇到deadlock victim,每次一臉懵逼。研究了下怎么跟蹤,寫(xiě)下來(lái)記錄下。文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧

建測(cè)試數(shù)據(jù)

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,先運(yùn)行只更新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,只運(yùn)行更新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

再運(yùn)行,第一段sql更新table2,運(yùn)行第二段sql更新table1,死鎖問(wèn)題重現(xiàn)。

說(shuō)下跟蹤死鎖的方法:

1.使用trace log跟蹤,執(zhí)行如下sql開(kāi)啟1222和1204 flag,死鎖信息會(huì)在sql server 日志中輸出。

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

下圖是1204輸出的信息

下圖是1222輸出的信息

2.使用sql server profiler進(jìn)行跟蹤

點(diǎn)擊Tools -> sql server profiler 選擇sql locks模板

運(yùn)行當(dāng)發(fā)生死鎖時(shí)會(huì)自動(dòng)捕獲,點(diǎn)擊dead lock paragraph查看死鎖

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

依次點(diǎn)擊Management -> Extended Events - >system health - >package0.event_file

輸入deadlock回車(chē),可以點(diǎn)擊details 把內(nèi)容另存為xdl文件再打開(kāi),或點(diǎn)擊deadlock查看圖

4.使用windows性能計(jì)數(shù)器檢測(cè)到死鎖再去sql中查詢(xún)

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

選擇實(shí)例:SQL Server :Locks \\ Number of DeadLocks/sec \\ _Total

實(shí)時(shí)查看:

下面的查詢(xún)提供了自從上次重啟以來(lái)在本服務(wù)器上發(fā)生的所有死鎖:

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'

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

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

標(biāo)簽:益陽(yáng) 七臺(tái)河 宿州 威海 銅仁 來(lái)賓 天水 防疫戰(zhàn)設(shè)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《sql server deadlock跟蹤的4種實(shí)現(xiàn)方法》,本文關(guān)鍵詞  sql,server,deadlock,跟蹤,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《sql server deadlock跟蹤的4種實(shí)現(xiàn)方法》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于sql server deadlock跟蹤的4種實(shí)現(xiàn)方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    英山县| 万盛区| 文水县| 中山市| 旺苍县| 涟源市| 鄂尔多斯市| 邹城市| 邯郸市| 综艺| 米脂县| 蒙阴县| 平利县| 崇仁县| 铜梁县| 大厂| 阿拉善右旗| 沙田区| 鄂尔多斯市| 红原县| 沐川县| 三穗县| 安新县| 巴林左旗| 盘锦市| 达拉特旗| 二手房| 新晃| 眉山市| 公安县| 南皮县| 高州市| 泽州县| 合阳县| 睢宁县| 昭平县| 秦皇岛市| 那坡县| 商南县| 昌吉市| 广平县|