欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

MsSql

當(dāng)前位置:主頁 > 數(shù)據(jù)庫 > MsSql >

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

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:MsSql|點(diǎn)擊: 次

前言

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

建測試數(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,死鎖問題重現(xiàn)。

說下跟蹤死鎖的方法:

1.使用trace log跟蹤,執(zhí)行如下sql開啟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版本無法直接使用。

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

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

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

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

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

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

下面的查詢提供了自從上次重啟以來在本服務(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é)

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

上一篇:sql server學(xué)習(xí)基礎(chǔ)之內(nèi)存初探

欄    目:MsSql

下一篇:sql server性能調(diào)優(yōu) I/O開銷的深入解析

本文標(biāo)題:sql server deadlock跟蹤的4種實(shí)現(xiàn)方法

本文地址:http://mengdiqiu.com.cn/a1/MsSql/10359.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有