设为首页 收藏本站
查看: 1148|回复: 0

[经验分享] 使用Extended Events诊断SQL Server 2012----在SQL Server 2012中创建Extended Event会话

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-18 10:29:57 | 显示全部楼层 |阅读模式
New Session Form介绍
SSMS提供两种途径来创建一个新的会话:New Session Wizard和New Sessiion创建表单,如图13-5所示。虽然新人倾向于使用向导来创建,但使用New Session(如图13-6所示)并不是太复杂。刚开始创建session时,推荐忽略向导。
SouthEast.jpg
SouthEast.jpg
除了给Session命名外,如Deadlock_Detection,它有如下3个选项(如图13-6中的方框标记):Template、Schedule和Causality(因果关系) Tracking.
Events窗格,如图13-7所示,用于配置收集数据的事件。
SouthEast.jpg
一旦events添加后,如图13-8所示,你就能点击Configure按钮。这样就显示如图13-9所示的可供选择的额外session选项。Actions又称为全局栏位,可供选择;filters又称为predicates,可被定义;之后你可以选择额外的栏位,即采集时可用的事件。
SouthEast.jpg SouthEast.jpg
窗格的Data Storage页面,如图13-10所示的可用目标的下拉列表是用来定义session的目标。一个session可以有多个targets,例如一个事件文件和一个事件计数器,在这里可以配置它们。如你后面所示,直方图目标有其自带的额外配置选项,当你把它们任何一个添加进去后就变成可用的了。
SouthEast.jpg
最后,你可以通过Advanced框格,配置一些高级的session选项,如Event Retention Mode和Max Memory Size,如图13-11所示。
SouthEast.jpg
监视服务器登录
看过session配置界面后,现在使用它来部署一个session,来捕获登录信息。这个session的重要选项如图13-12的方框标记的地方。如图中所示,我们从栏位client_app_name和client_hostname配置login事件来抓取数据,没有显示但有选择nt_username全局栏位。
SouthEast.jpg
一旦session创建好,如果你没有设置自动启动,那么你需要手动启动它。要做到这点,右击session,并选择Start Session。确认session在运行后,就会开始把登录信息捕获到你设置的目标。抓获的数据,如图13-13所示的在SSMS中显示的一个例子:
SouthEast.jpg
利用Extended Events监视分页(Page Split)
这个例子强制一个聚集索引执行几次分页,向你演示如何使用Extended  Events来监视发生的分页及哪个SQL Server语句引起的。图13-14显示了相关的session配置,配置session其余的选项及其事件文件目标不那么重要。栏位database_name添加了,但未显示。如果你没有添加这个,你仅仅获得database_id,对于你解决问题来说,信息仍足够。
SouthEast.jpg
创建并开启该session后,就要强制做一些分页,以供抓获。下面的脚本将会在insert语句引起分页之前创建一个简单的数据库和表。
  • create database PSDemo  
  • go  
  • use PSDemo  
  • go  
  • create table t1 (ID uniqueidentifier default newid(),  
  • val1 char(8000), val2 char(37))  
  • go  
  • create clustered index idx_t1 on t1(ID)  
  • go  
  •   
  • insert t1 (val1, val2) values ('X','Y')  
  • go  
  • -- Repeat this insert statement as often as you want to cause splits  
  • insert t1 (val1, val2) (select val1, val2 from t1)  
  • go  

执行该脚本后,你就能够看到创建一个数据库时分页有多频繁,特别是表设计时。图13-15显示了所捕获的分页的一个例子:

SouthEast.jpg
计算每个对象取得锁的个数
最后一个例子是使用直方图目标来合计查询执行时用户数据库中对象获得的锁的个数。你或许想这样做来发现数据库中锁的热点地方,但是这里使用它是因为要展示直方图目标和事件过滤器如何工作。事件lock_acquired提供所有所需信息,所以你不需要使用任何global action或额外的事件栏位。相反,因为SQL Server自身有很多来自系统进程的后台锁定活动发生,使用filter来排除你不感兴趣的锁定活动。配置如图13-16所示。
SouthEast.jpg
如果你想知道过滤器值来自哪里,答案就是综合已知的需求及反复试验。部署Extended Events会话的好处之一是,容易停止、重新配置及重新启动会话。栏位database_id是执行查询select db_id('PSDemo')获取的。添加直方图目标(histogram target 如图13-17)需要配置一些属性,但是你可以使用下拉框里的值。
SouthEast.jpg
随着session在运行,你可以执行前面实例中的insert语句来引起锁:insert t1 (val1, val2) (select val1, val2 from t1)。这会产生如图13-18所示的直方图。图中245575913实际就是表t1的对象ID,而261575970则是表t1的ID栏位的默认约束。
SouthEast.jpg
使用T-SQL创建对话
Extended Events有一整套T-SQL命令,这些命令在这里没有深入地覆盖。不幸的是,它们的复杂度已经成为人们还没有开始使用它们的重要原因之一,这就是为何聚焦于使用SSMS界面的原因。然而,如果你想使用T-SQL Extended Events命令,SSMS界面可以帮你入门,定义之后可以导出session的脚本。你可以使用Script按钮来做到这点,你或许熟悉SSMS其他部分,但是,如图13-19显示。
SouthEast.jpg
例如,抓获所有登出事件的session的T-SQL创建脚本如下显示:
  • CREATE EVENT SESSION [LogoutEvents] ON SERVER  
  • ADD EVENT sqlserver.logout(ACTION(sqlserver.client_app_name,  
  • sqlserver.client_hostname,sqlserver.nt_username))  
  • ADD TARGET package0.event_file(SET filename=N'C:\XELogs\LogoutEvents.xel')  
  • WITH (STARTUP_STATE=ON)  
  • GO  

对于大多数阅读本书的人而言,很容易追踪T-SQL脚本,你闲杂可能很容易地写出自己的脚本,来创建其他session。然而,SSMS的优势是可以协助你学习如何写出更复杂的脚本,而不会犯基本的错误。






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-22291-1-1.html 上篇帖子: 使用Extended Events诊断SQL Server 2012 下篇帖子: 使用Extended Events诊断SQL Server 2012----查看由Extended Event捕获的数据
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表