SQL Server擴充事件(Extended Events)-- 擴充事件概念解析

來源:互聯網
上載者:User

標籤:擴充事件   xevent   extented events   

SQL Server擴充事件(Extended Events)-- 擴充事件概念解析

 

描述了擴充事件中引入的幾個新概念:

 

650) this.width=650;" title="image" style="border-top:0px;border-right:0px;border-bottom:0px;border-left:0px;" alt="image" src="http://s3.51cto.com/wyfs02/M01/58/25/wKioL1SqWArD6UviAADRYipqMIk116.jpg" border="0" height="234" />

 

事件

 

事件是指代碼中定義的點。此類樣本包括:T-SQL 陳述式完成執行時的點或結束擷取鎖定時的點。每個事件都有一個定義的負載(該事件返回的列的集合),它是使用 ETW 模型(其中每個事件都返回一個通道和關鍵字作為負載的一部分)來定義的,以便能夠與 ETW 整合。SQL Server 2008 最初提供 254 個定義的事件,預計在今後還會增加。

 

使用下列代碼可以查看這些定義事件的列表:

 

SELECT xp.[name], xo.*FROM sys.dm_xe_objects xo, sys.dm_xe_packages xpWHERE xp.[guid] = xo.[package_guid]AND xo.[object_type] = ‘event‘ORDER BY xp.[name];

 

使用下列代碼可以尋找某個特定事件的負載:

 

SELECT * FROM sys.dm_xe_object_columnsWHERE [object_name] = ‘sql_statement_completed‘;GO

 

謂詞

 

謂詞是指在事件消耗前利用一組邏輯規則來篩選事件的方法。謂詞可以很簡單,如檢查事件裝載中的其中一個返回列是否為某個特定值(例如,通過物件識別碼 來篩選“鎖定-獲得”事件)。

它們還具有一些進階功能,如統計會話期間某個特定事件發生的次數、僅允許事件在發生一次後消耗,或者動態更新謂詞本身以抑制包含類似資料的事件的消耗。

 

謂詞可以使用布爾邏輯來編寫,以使其能夠儘可能走捷徑。這使得只需執行最少數量的同步處理即可確定是否需要消耗事件。

 

動作

 

動作是指在消耗某個事件前同步執行的一組命令。任何動作都可以被連結到任何事件。它們通常會收集大量資料並追加到事件裝載中(如 T-SQL 堆棧或查詢執行計畫)或執行某個被追加到事件裝載中的計算。

 

由於執行這些動作可能需要極高的代價,因此事件的動作僅在所有謂詞都計算完畢後才執行,如果在隨後確定該事件不會被消耗,則將不會有同步執行某個動作的點。使用下列代碼可找到預定義動作的列表:

 

SELECT xp.[name], xo.*FROM sys.dm_xe_objects xo, sys.dm_xe_packages xpWHERE xp.[guid] = xo.[package_guid]AND xo.[object_type] = ‘action‘ORDER BY xp.[name];

 

目標

 

目標只提供一種消耗事件的方法,任何目標都可以消耗任何事件(或至少可以在目標空閑時對事件進行處理 — 如擷取非審計事件的審計目標)。目標可以同步(例如,觸發事件的代碼等待該事件被消耗)或非同步消耗事件。

 

目標的範圍從簡單的使用者(如事件檔案和環緩衝區)直到能夠執行事件配對操作的複雜使用者。使用下列代碼可以找到可用目標的列表:

 

SELECT xp.[name], xo.*FROM sys.dm_xe_objects xo, sys.dm_xe_packages xpWHERE xp.[guid] = xo.[package_guid]AND xo.[object_type] = ‘target‘ORDER BY xp.[name];

 

資料包

 

資料包是一個用於定義擴充事件對象(如事件、動作和目標)的容器。資料包位於它所描述的模組(如可執行程式或 DLL)中。

 

使用擴充事件引擎註冊資料包時,它所定義的全部對象都可供使用。

 

會話

 

會話是一種將多個擴充事件對象連結到一起進行處理的方法 -- 事件包含動作,將被目標所消耗。會話可連結任何註冊的資料包中的對象,任何數量的會話都可以使用同一個事件、動作等。使用下列代碼可查看已定義了哪些擴充事件會話:

 

SELECT * FROM sys.dm_xe_sessions;Go

 

可使用 T-SQL 命令來建立、刪除、更改、停止和啟動會話。可以想見,這將提供很多靈活性,甚至提供通過對會話本身所捕獲的資料進行程式化分析來動態更改會話的功能。



本文出自 “SQL Server Deep Dives” 部落格,請務必保留此出處http://ultrasql.blog.51cto.com/9591438/1599378

SQL Server擴充事件(Extended Events)-- 擴充事件概念解析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.