[SQL]SQL Server 2008使用Extended Events SSMS Addin + Performance Dashboard Reports來監看系統
有時會看到SQL發生了deadlock,這時如果沒有即時使用SQL Profiler去錄下來的話,就不知到底是什麼原因發生了deadlock。
這時透過Extended Events來檢視來查看,所以可以到「SQL Server 2008 Extended Events SSMS Addin」安裝SSMS的Addin(SQL 2012已內建)。
安裝完後,開啟SSMS就會看到Extended Events Information的視窗。如果沒有可以從Menu檢視->Show Extended Event Session Explorer來顯示出來。如下圖,
可以從system_health的Events中可看到要監看的Event,其中xml_deadlock_report就是監看deadlock,所以我們使用2個connection來建立deadlock的情況,SQL如下,
--新增查詢
--SESSION 1:
USE tempdb;
GO
CREATE TABLE T1
(C1 INT)
CREATE TABLE T2
(C1 INT)
INSERT INTO T1 VALUES(1)
INSERT INTO T2 VALUES(1)
BEGIN TRAN
UPDATE T1 SET C1 = 2 WHERE C1 = 1
--新增查詢
--SESSION 2:
BEGIN TRAN
UPDATE T2 SET C1 = 3 WHERE C1 = 1
UPDATE T1 SET C1 = 3 WHERE C1 = 1
COMMIT
--回到SESSION 1
--SESSION 1:
UPDATE T2 SET C1 = 2 WHERE C1 = 1
COMMIT
然後Deadlock就發生了!
再來檢視ring_buffer的資訊,如下可看到發生Deadlock的語法,及造成Deadlock的相關訊息。
另外,如果說要看即時的效能Report的話,可安裝「SQL Server 2005 Performance Dashboard Reports」然後修改setup.sql中cpu_ticks_in_ms改成ms_ticks。
詳細資訊可參考保哥的「如何在 SQL 2008 安裝 Performance Dashboard Reports」文章,寫的很詳細哦!
可看到即時被Block的資訊,如下圖所示,
SQL 2012的Performance請從以下位置Download。
Microsoft® SQL Server® 2012 Performance Dashboard Reports
安裝完成後,您可以到安裝的目錄將performance_dashboard_main.rdl改成您能區別的檔名,
如我的機器上就裝了SQL 2005 & SQL 2012的Performance Dashboard Reports,所以會將2005的performance_dashboard_main.rdl改成performance_dashboard_2005.rdl。
而SQL 2012的就改成performance_dashboard_2012.rdl,這樣就能針對不同版本的SQL開啟Report。
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^