SQL Server 扩展事件系列 (1 of 31) -- 扩展事件概述
1. SQL Server 扩展事件概述
SQL Server 2008引入了扩展事件(Extended Events),它提供了新的机制收信数据库引擎的内部事件信息,具有高性能或高度可配置性。扩展事件的设计是主要专注于性能,尤其是与SQL Trace比较,开始会感得有点奇怪。但是,当你开始使用扩展事件,你将最有可能的举动是考虑跟踪的问题,并且你会发现扩展事件的强大。如果你还没有使用过扩展事件,这一系列的博文可以帮助你快速学习扩展事件。这篇文章将在较高层面上介绍扩展事件,讲述一些背景知识,后续的章节将基于这些前景知识。
扩展事件引擎
扩展事件引擎为扩展事件上管理对象和资源的中央控制器。引擎管理着负责处理从内存缓冲区到基于会话选项的目标的事件信息的进程池,也就是调度程序。引擎还维护着SQL Server实例已创建的事件会话信息和被引擎内部模块注册过的包的元数据。引擎本身不包括对象元数据。引擎主要是为可以注册的包、可以创建事件会话和有消耗的事件信息提供平台。
包 (Packages)
包是由扩展事件引擎的模块注册的,包括了模块所包含的扩展事件对象的信息。包是扩展事件内部其它对象元数据的最底层容器。包可以是事件(events)、动作(actions)、目标(targes)、映射(maps)、谓词(predicates)和类型(types)。在SQL Server 2008中,仅仅有四个包:sqlserver、sqlos、package0和一个仅供内部使用的SecAudit,SecAudit是用于服务器审计。sqlservr.exe加载了所有这些包。在Denali CTP1,还有三个额外的包:一个是由sqlserver加载,另外由其它模块加载;sqlclr包是由sqlservr.exe加载,ucs(unified communications stack)包由sqlservr.exe加载。除了这些变化package0和sqlos模块不再由sqlservr.exe加载,而是由sqldk.dll加载。
事件 (Events)
事件提供了包括事件的加载包的执行信息。一个事件和数据引擎内部的一个感兴趣的特定的代码点相对应。在SQL Server 2008中,一共有253个事件可以用来收集之前提到的信息。同时也有很多的事件,并非所有来自SQL Trace的公共事件都是由扩展事件实现。In SQL Server Denali CTP1中,事件增加到446,并且现在包括了所有SQL Trace的相对应的事件。每个事件信息返回对应的事件的特定代码点,我指的是基本信息的有效载荷。基有效载荷中返回的信息的量是由包的元数据中的事件定义所决定,但可以通过使用动作(Event)来添加。
动作 (Actions)
动作是绑定到引擎中事件会话的具体事件,当那个事件发生时,执行指定的任务。事件通常做两种类型的任务,要么收集被加到基础有效负荷额外触发事件的信息、普通全局状态信息,如:session_id, sql_text等等, 要么执行引擎内部的任务,如:插入debug_break或执行内存转储分析。在SQL Server 2008中,有35个动作可以使用。在SQL Server Denali CTP 1中就有43个动作可以使用,包括了Trace列的映射,如context_info, database_name, and event_sequence,这些在SQL Server 2008都是不可用到的。
目标 (Targets)
目标是扩展事件的事件的目的地。多数目标是存储驻留,只有当事件会话是活跃的在实例启动的状态,存在于内存。这些对于短期故障排除可能可用,如果是长期持续的事件就没有必要了。一个文件目标同时存在,类似于SQL Trace中的Trace File,收集的信息存于文件系统,这样就可以被其他人稍后转移到其它地方进行分析。扩展事件有两种类型的目标:具有线程缓冲事件的同步目标;和当缓冲区填满时或超过一个事件的会话定义的最大分发持续时间,由引擎调度器发生的事件的异步目标。后续的章节会讲述具体的目标。
映射(Maps)
映射提供扩展事件内部信息的信息检索。映射提供一个用来定义事件会话和由事件会话收集的相关信息的特定类型的键值对。举个例子:将引擎的键映射为wait_types的逻辑名,SQL Server内部会触发wait_types。
谓词(Predicates)
谓词提供了扩展事件的过滤机制,被定义在具体的事件上,用于控制事件真正触发的情况。扩展事件中的谓词提供了短路开关,意思就是说如果第一个假评估谓词的字符串中终止了评估就会阻止事件触发,这样已定义的谓词评估就具有高性能。事件的基础负荷返回的任何数据可以被定义为谓词,引擎内部的可用全局状态信息也可以被定义为谓词。定义谓词有两种不同的方法,使用常用过虑子句条件,如:<,>, >=, <=, =, <>, LIKE, NOT LIKE,等等。但也可以使用包元数据中所包含的文本比较器定义。当引擎内部的一个会话起动时,任何使用常用过虑子句条件定义的谓词被转换为相应的文本比较方法。
类型(Types)
类型定义了扩展事件内部信息元素的数据类型。在SQL Server 2008中,有29种不同的类型,但是在SQL Server Denali CTP1中只有28种;database_context 类型被移除。除了定义包的类型,一些事件的数据元素将定义数据类型作为映射名字,它提供了数据元素返回信息的类型。
事件会话(Event Sessions)
事件会话是事件的集合,其相应的行动和谓词和目标,这将是被收集的事件的目的地。定义的事件会话中存在扩展事件引擎,直到它们被显式删除会话,允许会话启动,并在需要时停止而不必重新创建会话,即使是重启服务。事件会话有许多配置选项,可以控制会话的功能,包括:服务启动时是否自动启动;事件触发和被分发到目标之间的最大持续时间; 事件会话缓冲的可用内存量;内存如何分区;当缓冲区空间相对调度程序很快被占满时,事件可能丢失时、如果事件丢失了或事件怎么丢失的。并且还有很多。一个事件会话要求最少有一个事件创建,但可以没有目标,允许事件发生的地方,如:不需为损耗实际分发事件发生的内存转储。
What’s next?
弄明白了基本知识,下一章节我们一起研究DMV的元数据,看看如何获得扩展事件对象的信息。想了解更多关于扩展事件的信息,请查看我在MSDN写的白皮书Using SQL Server 2008 Extended Events 。
原文:http://www.sqlskills.com/blogs/jonathan/extended-events-overview/
注:如果有什么地方翻译不妥,欢迎纠正。Thanks!
转载于:https://www.cnblogs.com/sql-expert/p/3198307.html
SQL Server 扩展事件系列 (1 of 31) -- 扩展事件概述相关推荐
- 恢复SQL Server被误删除的数据(再扩展)
原文:恢复SQL Server被误删除的数据(再扩展) 恢复SQL Server被误删除的数据(再扩展) 大家对本人之前的文章<恢复SQL Server被误删除的数据> 反应非常热烈,但是 ...
- 【飞秋】SQL Server性能调教系列(4)--Profiler(上)
一:简介 在处理性能问题是,DBA倾向于关注系统技术层面,如资源队列,资源利用率,系统loading等.而用户只把性能问题认为是等待,他们从业务逻辑层面发出一个请求,等待返回结果,后台数据库就需要去响 ...
- SQL Server时间粒度系列----第4节季、年时间粒度详解
本文目录列表: 1.SQL Server季时间粒度 2.SQL Server年时间粒度 3.总结语 4.参考清单列表 SQL Serve季时间粒度 季时间粒度也即是季度时间粒度.一年每3个月是一个 ...
- sql server 索引阐述系列五 索引参数与碎片
原文:sql server 索引阐述系列五 索引参数与碎片 -- 创建聚集索引 create table [dbo].[pub_stocktest] add constraint [pk_pub_st ...
- SQL Server 2008高可用性系列:数据库快照
SQL Server 2008高可用性系列:数据库快照 http://database.51cto.com 2010-09-13 14:45 我爱菊花 博客园 我要评论(0) 摘要:我们今天要 ...
- SQL Server调优系列进阶篇(如何维护数据库索引)
前言 上一篇我们研究了如何利用索引在数据库里面调优,简要的介绍了索引的原理,更重要的分析了如何选择索引以及索引的利弊项,有兴趣的可以点击查看. 本篇延续上一篇的内容,继续分析索引这块,侧重索引项的日常 ...
- SQL Server调优系列基础篇(子查询运算总结)
前言 前面我们的几篇文章介绍了一系列关于运算符的介绍,以及各个运算符的优化方式和技巧.其中涵盖:查看执行计划的方式.几种数据集常用的连接方式.联合运算符方式.并行运算符等一系列的我们常见的运算符.有兴 ...
- SQL Server调优系列基础篇(联合运算符总结)
前言 上两篇文章我们介绍了查看查询计划的方式,以及一些常用的连接运算符的优化技巧,本篇我们总结联合运算符的使用方式和优化技巧. 废话少说,直接进入本篇的主题. 技术准备 基于SQL Server200 ...
- SQL Server调优系列玩转篇(如何利用查询提示(Hint)引导语句运行)
前言 前面几篇我们分析了关于SQL Server关于性能调优的一系列内容,我把它分为两个模块. 第一个模块注重基础内容的掌握,共分7篇文章完成,内容涵盖一系列基础运算算法,详细分析了如何查看执行计划. ...
最新文章
- 深度学习和几何(演讲提要)
- html一半文字一半图片,一个div的子div宽是200高是350 里面怎么让图片显示一半 另外一半文字居中!?...
- 【原创】新手入门一篇就够:从零开发移动端IM
- android 黑边边框,手机屏幕边缘的黑边是什么呢?
- Android—常用组件练习
- 多校3 1008 Solve this interesting problem
- 数学分析学习(一):映射与不等式
- 家长进课堂 计算机ppt,【家长进朴园】探秘计算机—5.7中队家长进课堂活动
- iconfont图标
- Burp Suite暴力破解网站密码
- 坐标计算机在线,公路坐标计算系统免费版
- 软件测试需求频繁变更,软件测试人员如何测试需求频繁变动的项目
- 拯救懒癌、码农、减肥人士的代餐,有多大的掘金前景
- 数据可视化——图表类型选择
- 基于ZigBee的家居控制系统的设计与应用
- BP神经网络隐层节点的个数设置方法
- AliCoCo:阿里电商知识图谱核心技术揭秘 Alibaba E-commerce Cognitive Concept Net
- HttpWebRequest 提示 “基础连接已关闭:发送时发生意外错误” 的解决方法
- 爬虫python代码网易云_使用python爬取网易云歌曲下载时为0KB的解决方法 | ZPY博客...
- 我们应该更有效的利用我们时间
热门文章
- 老板:kill -9 的原理都不知道就敢去线上执行?明天不用来了
- 可用性高达99.999%!支付系统高可用架构设计实战
- 再有人问 Java 中的注解就把这篇文章丢给他!
- 拿什么来衡量程序员的生产力?
- 使用Nomad和OpenFaaS提供FaaS服务
- Spring-beans架构设计原理
- 2021年全球数据中心调查
- ML之FE:对爬取的某平台二手房数据进行数据分析以及特征工程处理
- 成功解决AttributeError: module tensorflow.image has no attribute resize
- Py之turicreate:turicreate的简介、安装、使用方法之详细攻略