首页 > 语言 > 关键词  > SQL最新资讯  > 正文

简要介绍SQL Server 2008新的事件处理系统

2009-12-21 09:02 · 稿源:

SQL Server Extended Events(下面简称XEvent)是SQL Server 2008里新加的事件处理系统,用来取代SQL Server原先的SQL Trace的跟踪机制。事件处理系统对一个复杂服务器系统的排错,调试是极为关键的。和SQL Server原来的事件处理系统相比较,XEvent具有下列的优势:

消耗更少的系统资源,更适用于在产品服务器上的排错和调试。并且每收集一个系统事件所消耗的资源都是可预测的。

  1. 不仅仅能收集事件数据,还能收集在这事件触发点的系统动态运行信息,例如内存,T-SQL Stack等等。
  2. 可配置性,能够根据系统负载的需求配置所需收集的事件信息。
  3. 下面是一个简单的例子介绍如何使用XEvent来做系统排错工作。

当前台应用性能下降的时候,数据库管理员经常需要确定是否有资源锁的申请冲突,既所谓我们说的blocking。在SQL Server 2008里面,你可以查询系统视图sys.dm_exec_requests,并且能发现有一些进程正在等待资源锁,比如像下面这个结果:

我们可以看到有个Session 54的状态是Suspended,意味着一个查询的操作被blocked, 但是我们看不到是哪一个Query占用了资源,以及查询计划和T-SQL Stack等等,如果我有下面的XEvent Session我们就能够解决这个问题。(在下面的例子中我们假设XEvent Session在Block发生之前已经启动好了)

1、在查询编辑器执行下面的命令,这会创建一个XEvent Session来捕捉lock_acquired和lock_released,同时我们还会抓下sql_text,tsql_stack和plan_handle等信息。


-- Perform cleanup.

IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='FindBlockers')

DROP EVENT SESSION FindBlockers ON SERVER

GO

-- 我们这边假设是数据库”DAA”里出了block,所以我们会使用一个predicate去过滤掉其他数据库的Block问题

--

DECLARE @dbid int

SELECT @dbid = db_id('DAA')

IF @dbid IS NULL

BEGIN

RAISERROR('DAA is not installed. Install DAA before proceeding', 17, 1)

RETURN

END



DECLARE @sql nvarchar(1024)

SET @sql = '

CREATE EVENT SESSION FindBlockers ON SERVER

--这里我们加了lock_acquired的Event,并要求返回sql_text,database_id,tsql_stack, --plan_handle和session_id的信息

--

ADD EVENT sqlserver.lock_acquired

(action

( sqlserver.sql_text, sqlserver.database_id, sqlserver.tsql_stack,

sqlserver.plan_handle, sqlserver.session_id)

WHERE ( database_id=' + cast(@dbid as nvarchar) + ' AND resource_0!=0)

),

ADD EVENT sqlserver.lock_released

(WHERE ( database_id=' + cast(@dbid as nvarchar) + ' AND resource_0!=0 ))

ADD TARGET package0.pair_matching

( SET begin_event=''sqlserver.lock_acquired'',

begin_matching_columns=''database_id, resource_0, resource_1, resource_2, transaction_id, mode'',

end_event=''sqlserver.lock_released'',

end_matching_columns=''database_id, resource_0, resource_1, resource_2, transaction_id, mode'',

respond_to_memory_pressure=1)

WITH (max_dispatch_latency = 1 seconds)'



EXEC (@sql)

--

-- Create the metadata for the event session

-- Start the event session

--

ALTER EVENT SESSION FindBlockers ON SERVER

STATE = START

2、一旦XEVENT然后我们可以执行下面的语句去找到那些block了别人的查询语句:


--

-- The pair matching targets report current unpaired events using

-- the sys.dm_xe_session_targets dynamic management view (DMV)

-- in XML format.

-- The following query retrieves the data from the DMV and stores

-- key data in a temporary table to speed subsequent access and

-- retrieval.

--

SELECT

objlocks.value('(action/value)[5]', 'int')

AS session_id,

objlocks.value('(data/value)[5]', 'int')

AS database_id,

objlocks.value('(data/text)[1]', 'nvarchar(50)' )

AS resource_type,

objlocks.value('(data/value)[9]', 'bigint')

AS resource_0,

objlocks.value('(data/value)[10]', 'bigint')

AS resource_1,

objlocks.value('(data/value)[11]', 'bigint')

AS resource_2,

objlocks.value('(data/text)[2]', 'nvarchar(50)')

AS mode,

objlocks.value('(action/value)[1]', 'varchar(MAX)')

AS sql_text,

CAST(objlocks.value('(action/value)[4]', 'varchar(MAX)') AS xml)

AS plan_handle,

CAST(objlocks.value('(action/value)[3]', 'varchar(MAX)') AS xml)

AS tsql_stack

INTO #unmatched_locks

FROM (

SELECT CAST(xest.target_data as xml)

lockinfo

FROM sys.dm_xe_session_targets xest

JOIN sys.dm_xe_sessions xes ON xes.address = xest.event_session_address

WHERE xest.target_name = 'pair_matching' AND xes.name = 'FindBlockers'

) heldlocks

CROSS APPLY lockinfo.nodes('//event[@name="lock_acquired"]') AS T(objlocks)

--

-- Join the data acquired from the pairing target with other

-- DMVs to return provide additional information about blockers

--

SELECT ul.*

FROM #unmatched_locks ul

INNER JOIN sys.dm_tran_locks tl ON ul.database_id = tl.resource_database_id AND ul.resource_type = tl.resource_type

WHERE resource_0 IS NOT NULL

AND session_id IN

(SELECT blocking_session_id FROM sys.dm_exec_requests WHERE blocking_session_id != 0)

AND tl.request_status='wait'

上面的语句返回下面的结果,我们可以看到是一个Session 53的Update更新语句Block了Session 54的查询:

有下面sql_text里可以看到,整个更新语句begin tran Update BlockTest set Col1 = 'Updated' where ID = 1中,由于少了一个Commit tran,所以block了其他查询对表BlockTest的操作

举报

  • 相关推荐
  • 一天净赚2000元!知了猴怎么就火出圈了

    媒体报道,当夏季夜幕降临,山间树林、公园河堤便悄然出现一群夜行者。他们手持电筒、拎着塑料袋,目光如炬地扫视每一棵树这99.99%是在捕捉知了猴,即蝉的幼虫。 在青岛等地,有人一晚上能捕获12-15斤,按当前每斤105元的市价计算,可净赚2000余元,价格较二十年前暴涨6倍。 这种藏在树枝间的暗夜美味,蛋白质含量远超普通食材,尤以刚褪壳时的口感最为鲜嫩。民间素

  • 女子买菜错付2000元大爷称只看到5元 后续:已报警找回

    ​7 月 9 日,四川发生一起因付款疏忽引发的趣事。一位大姐在路边摊选购蔬菜时,掏出一沓现金准备付款,不料在付款过程中却“迷糊”了一把。她左手捏着一张 5 元纸币,右手则握着一沓总计 2000 多元的现金,却鬼使神差地将两千多元递给了卖菜大爷,自己浑然未觉。 随后,当大姐准备继续挑选其他蔬菜并再次付款时,才发现手中的钱已经所剩无几。面对这一突如其来的�

  • MCP协议资源服务去哪找?国内MCP server资源网站推荐

    ​在人工智能技术飞速发展的今天,AI模型与外部工具和服务的交互需求日益增长。为了满足这一需求,一个名为 AIbase 的全球MCP服务器集合平台(https://mcp.aibase.cn/)应运而生,为开发者和企业提供了前所未有的便利和强大的功能支持。

  • 抓住人们对“Soulmate”的渴望,20天入账200万美金?

    6月17日,一款 AI 占星产品 Starla-Call the Universe 进入了 iOS 美国下载总榜前10,当笔者以为这又是一个昙花一现的产品时,它不仅能够持续坚守榜单 Top10长达半个月,而且到了6月24日,另一款产品 Astra-Life Advice 也进入了美榜前10,两款同类产品相继进入 Top10,并双双持续在榜超1周的时间。

  • MCP server资源网站去哪找?国内MCP服务合集平台有哪些?

    在人工智能飞速发展的今天,AI模型与外部世界的交互变得愈发重要。一个好的工具不仅能提升开发效率,还能激发更多的创意。今天,我要给大家介绍一个宝藏平台——AIbase(<https://mcp.aibase.cn/>),一个专注于MCP(Model Context Protocol)服务的全球集合平台,它正在悄然改变AI应用开发的格局。 平台精心挑选了全球最受欢迎的MCP服务进行推荐。这些服务经过了市场的检验,具�

  • 首届央国企数智化与转型战略成果发布会在京召开,TencentOS Server展示应用成果

    6月26日,首届央国企数智化转型战略成果发布会在京举行,发布《央国企数智化发展研究报告》等重要成果。腾讯云受邀参会,其自研操作系统TencentOS Server凭借"西游四件套"等创新技术方案获得关注。该系统已实现超1000万套部署,支撑金融、政务等行业国产化需求,具备三大优势:1)性能提升方面,CPU利用率提升15-45%,整机能耗降低5-10%;2)技术创新方面,独创qGPU虚拟化技术可降低60%硬件成本;3)生态适配方面,已完成与国产主流硬件的互认证。目前该系统已助力农业银行等金融机构实现5%-25%性能提升,并成为金融、党政领域首选方案。作为国内三家具备Linux研发能力的厂商之一,腾讯云将持续打磨技术,支撑企业数字化转型需求。

  • 拍卖史上最昂贵包袋诞生!原版爱马仕7200万天价成交

    拍卖史上最贵的包袋诞生了,成交价高达7200万元人民币! 据苏富比拍卖行通报,在上周四举行的巴黎拍卖会上,一爱马仕原版柏金包以858.25万欧元(约合1000万美元,当前约合7200万元人民币,包含佣金和手续费)成交。 据悉,这款黑色皮革爱马仕手袋是1984年由时任爱马仕首席执行官的让路易迪马(Jean-Louis Dumas)为已故英国歌手兼演员简柏金(Jane Birkin)特别定制。

  • 比特币首触112000美元:盘中涨幅最高达3%

    7月10日,加密货币市场传来重磅消息,比特币价格首次向上触及112000美元,一举刷新历史新高,盘中涨幅最高达3%,这一行情引发了市场的广泛关注与热议。 从年内表现来看,比特币今年迄今涨幅约为19%,展现出强劲的上升势头。此次价格的大幅上涨,不仅让持有比特币的投资者收获颇丰,也吸引了更多市场目光的聚焦。

  • 周杰伦发布第一条抖音视频:回顾成长史 粉丝超1200万

    今日上午11时,华语流行乐巨星周杰伦在其抖音账号“周同学”上发布了首部视频作品,以一段90秒的精彩视频回顾了自己的成长历程,迅速在网络上引发了广泛关注和热议。 视频中,周杰伦通过展示自己从小到大的珍贵照片,带领观众穿越时光,见证了他从童年到青年的蜕变。画面里的童年周杰伦,眼神清澈,笑容可爱,神态娇憨,让人不禁为之动容。尤为有趣的是,周杰�

  • 边开直播边做实验,单场卖出2200万,小红书有了00后“一姐”

    “李嗲你真的…到底是谁想出来的这么抽象的测评方法?” 当00后的李嗲在直播间里打开UV相机摄像头进行测评防晒霜的时候,被紫外线灯照射的她和付铁寒立马在镜头下变成两个“小黑人”。这一场面引得无数年轻人一边大呼抽象,一边为这场眼见为实的实验买单。 在消费者的支持下,李嗲一路冲上小红书实时买手榜第一,成为小红书电商首个00后“一姐”。这样的成长速度