sqlserver 死鎖監控

sqlserver日誌默認沒有記錄死鎖的。所以如果沒有提前配置監控的情況下,你無法找到死鎖的日誌進行定位。所以大家有時候會看到別人文章裏寫什麼事務日誌,擴展事件等方式去查找歷史的sqlserver出現的死鎖原因這是沒有辦法的。

所以,提前配置死鎖監控很重要。

死鎖監控配置

(1)sqlserver日誌監控

打開1222和1204跟蹤,這樣子死鎖的信息會記錄在error log中。這樣子可以通過存儲過程xp_readerrorlog進行查看。

首先,打開死鎖監控

dbcc traceon (1222,-1)

dbcc traceon (1204,-1)

然後,就可以等待死鎖再次發生,如果再次發生,則可以通過存儲過程查詢。

exec xp_readerrorlog

這個存儲過程是有參數的,如果你沒有寫參數,他默認查詢的是sqlserve日誌編號爲0(當前的日誌文檔,不是當天,指的是前一一個文件的時間節點到當前時間的所有日誌)的日誌。

如果你想選擇參數,從左往右是一共6個,如下解釋

1)日誌編號——整型,如下圖所示的編碼,一次只能指定一個編號 ,不能多個。

2)查找的日誌類型——整型,1是sqlserver的日誌,2是sqlserver代理日誌。

3)要查找的字符串,用雙引號包着。——字符串

4)要查找的字符串——字符串,3和4沒有區別,也就是你規定兩個要查找的字符串,如果你只需要查找一個,第二個寫NULL就可以。

5)查詢的開始日期——字符串,格式是YYYY-MM-DD hh:mm:ss

6)查詢的結束日期——字符串,格式是YYYY-MM-DD hh:mm:ss

直接給一個示例(參數一定要用雙引號引着,要不然會報錯)

exec xp_readerrorlog 1,1,"deadlock",null,"2019-05-01 00:00:00","2019-06-01"

(2)XEvent的session監控

在XEvent(擴展事件)配置死鎖監控的一個session。然後開啓session就可以監控了。

那如何新建一個Session呢?

右鍵選中會話,單擊【新建會話嚮導】

不使用任何模板

本來到輸入deadlock進行選擇的地方就可以停下來,但是個人建議一定要用文件的形式存儲,勾選了【啓用文件滾動更新】可以在空間不足時新日誌直接記錄覆蓋,保證最新的死鎖日誌文件存儲在系統中。

配置死鎖監控

當然,如果你的死鎖是可以重現的,那你可以用以下方法進行跟蹤:

【工具】->【sql server profile】

出來的界面就可以實時監控是否有死鎖,而且如果有死鎖的話,可以直接以圖形化的方式顯示出來,非常的友好。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章