SQL Server 2008性能调优技巧 Extended Events

Extended Events是从SQL Server 2008之后具有的轻量级信息跟踪和排查工具,

非常适合进行性能调优。

这里是一个写的很棒、很有条理的入门文章 

https://www.mssqltips.com/sqlservertip/2144/an-overview-of-extended-events-in-sql-server-2008/

SQL Server 2008性能调优技巧 Extended Events

  简单的说,Extend Events是一个轻量级的跟踪框架, Events表示要跟踪的事件,Action表示当某个事件发生后需要采取的动作,

Targets表示动作处理指向目标,比如是文件还是内存, Predicates表示断言即筛选什么样的Events, Session表示监听的会话。

例子一:查看最近的死锁事件

 

select XEventData.XEvent.value('(data/value)[1]', 'varchar(max)') as DeadlockGraph
FROM
(select CAST(target_data as xml) as TargetData
from sys.dm_xe_session_targets st
join sys.dm_xe_sessions s on s.address = st.event_session_address
where name = 'system_health') AS Data
CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS XEventData (XEvent)
where XEventData.XEvent.value('@name', 'varchar(4000)') = 'xml_deadlock_report'

 得到死锁的XML文件后,根据associate objectid查询死锁的对象信息

SELECT OBJECT_NAME(i.[object_id]) , i.name
    FROM sys.partitions as p
    inner join sys.indexes as i on i.object_id = p.object_id 
    and i.index_id = p.index_id
    WHERE partition_id in =[associate objectid]

--未完待续

 

参考链接 

http://www.sqlservercentral.com/articles/deadlocks/65658/

https://*.com/questions/22797023/how-to-figure-out-what-object-is-represented-by-associatedobjectid-during-blocki