当前位置:Gxlcms > 数据库问题 > SQL 扩展事件

SQL 扩展事件

时间:2021-07-01 10:21:17 帮助过:1人阅读

为了加上操作,只需要选中选择框。也可以把一个操作加到多个事件上,高亮两个事件,然后选中操作即可。这里我们把client_app_name, database_id, server_instance_name, 和session_id 加到这两个事件上。

技术分享

图6

    上述操作是普遍良性的。而扩展事件也提供额一下副作用的操作。例如debug_break字段就会引起调试中断。

设定过滤

    最后,选择过滤tab来配置任意谓词。为了缩短事件估计,阻止扩展事件引擎收集没必要的数据,需要配置一个谓词来过滤事件数据。谓词配置和缩短逻辑是极其重要的。

    例如,选中两个事件,然后从下拉列表选择logical_reads(逻辑读),改变操作符列为>=,然后输入10000。在这种配置下,我们的会话仅仅捕捉sqlstatement 或者存储过程执行超过时10000的逻辑读的事件。

技术分享

图7

    这种选择多个功能,加入相同的谓词给两个事件,限制了可利用的全局字段和俩个事件的普通字段。根据时间的选择,不是所有的字段都可以使用。例如,加入我们加入error_reported event事件,那么选择这三个事件时,逻辑读这个谓词就不能使用了。如下图

技术分享

图8

    在这个例子中,我们配置相同的谓词给两个事件,但是我们也可以灵活的配置每一个事件。

    此刻,我们可以选择OK来创建事件会话完成会话,因为满足了最低要求。定义事件会话的目标是非必要的。例如,我们配置error_reported 事件加入create_dump_single_thread操作,没必要保存抓取数据。下面我们将介绍如何定义目标文件。

数据存储页:定义目标文件

    选择数据存储也然后目标下面选择类型,选择event_file。接着下面输入文件名,选择浏览输入文件的输出位置。路径的最大长度是260个字符。例子中使用的是D:\temp\HighReadQueries。这里不需要包含文件的默认扩展名.xel。扩展事件引擎会附_0_和一个整性数字(文件创建时间到1600年1月1日的秒的数字)来作为文件结尾,保证文件名是唯一的。该文件类型提供了选项来设置最大文件的值,并且允许多次反复使用文件。如果没有指定文件最大值,则文件将会增长至填满驱动为止。

技术分享

图9

高级会话选项

    在高级选项页面,能看到额外的高级的会话选项。这里我们可以今后讨论,这里保持默认即可。

事件会话DDL

    选择OK来完成会话,然后这个会话出现在扩展事件->会话的文件夹下,然后发现他是激活的,因为我们在一开始我们选择了可选框—创建会话后立即开启事件会话。生成T-SQL脚本,选择脚本按钮点击OK或者创建完成后右键输出创建脚本到查询窗口(之前介绍了)。这里我加上了相应的注释,以便理解。

/*Create the session, named as specified on the General page*/
CREATE EVENT SESSION [HighReadQueries] ON SERVER

/*Add and configure events, actions and predicates, as specified on the Events page*/
ADD EVENT sqlserver.rpc_completed (  
    ACTION ( sqlserver.client_app_name,
      sqlserver.database_id,
      sqlserver.server_instance_name,
      sqlserver.session_id )
    WHERE ( [logical_reads] >= ( 10000 ) ) ),
ADD EVENT sqlserver.sql_statement_completed (  
    ACTION ( sqlserver.client_app_name,
      sqlserver.database_id,
      sqlserver.server_instance_name,
      sqlserver.session_id )
    WHERE ( [logical_reads] >= ( 10000 ) ) )

/*Add and configure a target, as specified on the Data Storage page*/
ADD TARGET package0.event_file ( SET filename = N‘C:\temp\HighReadQueries‘ )

/* Set Session-level options, specified on the General and Advanced pages*/
WITH ( MAX_MEMORY = 4096 KB ,
        EVENT_RETENTION_MODE = ALLOW_SINGLE_EVENT_LOSS ,
        MAX_DISPATCH_LATENCY = 30 SECONDS ,
        MAX_EVENT_SIZE = 0 KB ,
        MEMORY_PARTITION_MODE = NONE ,
        TRACK_CAUSALITY = OFF ,
        STARTUP_STATE = ON );
GO

  

代码2

与我们之前的代码很像。除了有会话立即开始,我们还选择了”捕获实时在屏幕上监视数据“。一个新的窗口被打开来显示被事件会话捕捉的数据,就像Profiler做的一样。但是不同的时,当观察实时数据引起系统性能问题时,监视器将会自动关闭。

总结

    完成后,我们已经熟悉了扩展事件,比如创建基本会话,捕捉一个或者多个事件信息,收集操作的数量,使用简单的谓词,写入文件等等。可视化操作大大减轻了脚本的难度,也提供了很多基础信息的选择,大大方便了扩展事件的开发。这块只是开始应用,希望有大神能指点一下。

SQL 扩展事件

标签:

人气教程排行