最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2018年09月07日 14:33:02   作者:Code Dog  
一提到跟蹤倆字,很多人想到警匪片中的場景,但這里介紹的可不是一樣的哦,下面這篇文章主要給大家介紹了關(guān)于sql server deadlock跟蹤的4種實(shí)現(xiàn)方法,文中通過圖文以及示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

最近寫程序常會遇到deadlock victim,每次一臉懵逼。研究了下怎么跟蹤,寫下來記錄下。文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,下面話不多說了,來一起看看詳細(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,死鎖信息會在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ā)生死鎖時會自動捕獲,點(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í)時查看:

下面的查詢提供了自從上次重啟以來在本服務(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í)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • 顯示同一分組中的其他元素的sql語句

    顯示同一分組中的其他元素的sql語句

    這篇文章主要介紹了使用sql語句如何顯示同一分組中的其他元素,需要的朋友可以參考下
    2014-05-05
  • SQLSERVER對索引的利用及非SARG運(yùn)算符認(rèn)識

    SQLSERVER對索引的利用及非SARG運(yùn)算符認(rèn)識

    SQL對篩選條件簡稱:SARG(search argument/SARG)當(dāng)然這里不是說SQLSERVER的where子句,是說SQLSERVER對索引的利用,感興趣的朋友可以了解下,或許本文的知識點(diǎn)對你有所幫助哈
    2013-02-02
  • SQL語句練習(xí)實(shí)例之四 找出促銷活動中銷售額最高的職員

    SQL語句練習(xí)實(shí)例之四 找出促銷活動中銷售額最高的職員

    你剛在一家服裝銷售公司中找到了一份工作,此時經(jīng)理要求你根據(jù)數(shù)據(jù)庫中的兩張表得到促銷活動銷售額最高的銷售員
    2011-10-10
  • SQL?Server日志清理3種實(shí)現(xiàn)方式

    SQL?Server日志清理3種實(shí)現(xiàn)方式

    這篇文章主要給大家介紹了關(guān)于SQL?Server日志清理3種實(shí)現(xiàn)方式的相關(guān)資料,在數(shù)據(jù)庫使用很久后日志文件會累計(jì)的越來越大,如果硬盤空間不足可能會導(dǎo)致宕機(jī),需要的朋友可以參考下
    2023-09-09
  • 淺析SQL語句中GROUP BY的用法

    淺析SQL語句中GROUP BY的用法

    “Group By”從字面意義上理解就是根據(jù)“By”指定的規(guī)則對數(shù)據(jù)進(jìn)行分組,所謂的分組就是將一個“數(shù)據(jù)集”劃分成若干個“小區(qū)域”,然后針對若干個“小區(qū)域”進(jìn)行數(shù)據(jù)處理。
    2014-08-08
  • SQL Server 總結(jié)復(fù)習(xí)(一)

    SQL Server 總結(jié)復(fù)習(xí)(一)

    寫這篇文章,主要是總結(jié)最近學(xué)到的一些新知識,這些特性不一定是SQLSERVER最新版才有,大多數(shù)是2008新特性,有些甚至是更早。如果有不懂的地方,建議大家去百度谷歌搜搜,本文不做詳細(xì)闡述,有錯誤的地方,歡迎大家批評指正
    2012-08-08
  • 自己收集比較強(qiáng)大的分頁存儲過程 推薦

    自己收集比較強(qiáng)大的分頁存儲過程 推薦

    這兩天幫朋友修改一個項(xiàng)目,看到一個存儲過程,感覺性能非常高。于是,整合自己以前搜集的比較好的存儲過程,拿來跟大家分享下
    2011-11-11
  • SQL Server中避免觸發(fā)鏡像SUSPEND的N種方法

    SQL Server中避免觸發(fā)鏡像SUSPEND的N種方法

    這篇文章主要介紹了SQL Server中避免觸發(fā)鏡像SUSPEND的N種方法,需要的朋友可以參考下
    2016-01-01
  • SQL  BETWEEN 的常見用法小結(jié)

    SQL  BETWEEN 的常見用法小結(jié)

    BETWEEN操作符是SQL中非常有用的工具,它允許你快速選取某個范圍內(nèi)的值,本文給大家介紹SQL  BETWEEN 的常見用法,感興趣的朋友一起看看吧
    2025-04-04
  • 盤點(diǎn)SqlServer?分頁方式和拉姆達(dá)表達(dá)式分頁

    盤點(diǎn)SqlServer?分頁方式和拉姆達(dá)表達(dá)式分頁

    這篇文章主要介紹了SqlServer?5種分頁方式和拉姆達(dá)表達(dá)式分頁,進(jìn)來看看吧,本文結(jié)合示例代碼給大家講解的非常詳細(xì),需要的朋友可以參考下
    2022-12-12

最新評論

临海市| 永宁县| 凌云县| 肃北| 酉阳| 深泽县| 寻甸| 宜章县| 高碑店市| 寻甸| 富民县| 叙永县| 天津市| 大余县| 东至县| 东兰县| 卢湾区| 彭州市| 正镶白旗| 昌江| 汪清县| 青岛市| 岳西县| 柘荣县| 余干县| 郑州市| 信宜市| 昂仁县| 阳山县| 永丰县| 托克逊县| 宁津县| 韶山市| 德州市| 凉山| 天柱县| 邓州市| 通化县| 绵阳市| 阿拉尔市| 怀集县|