[Notes] [tracking] 2.3 Extended Event - slow query SQL (3S execution of more than SQL)

--sql server 2008 and above only support 2012 and above is supported GUI interface

msdn Extended Event: Click on the link to open

 [1] T-SQL to achieve

And sql_batch_completed incident (occurs when the batch is finished Transact-SQL) based rpc_completed (remote procedure call occurs when completed) event

Transfer: HTTPS: // blog.csdn.net / yenange / Article This article was / the Details / 52,592,814 

-   Delete event session   
IF  EXISTS ( the SELECT  *  the FROM sys.server_event_sessions the WHERE name =  ' slow_query ' )  
     DROP EVENT SESSION slow_query ON SERVER   
 GO   
-   create event session   
the CREATE eVENT sESSION [ slow_query ]  ON SERVER 
 the ADD eVENT sqlserver.rpc_completed (
    The ACTION (sqlos.task_time, sqlserver.database_name, sqlserver.nt_username, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.username) 
    the WHERE 
    - the AND [SQLServer] [database_name] = N'xxxx '-. The database name, modified self 
    - - and sqlserver.username = N'xxxx '- database username, self-modifying 
    [ DURATION ] > = 3,000,000                     - consumption seconds over 3 seconds 
    ),
 the ADD the EVENT sqlserver.sql_batch_completed ( 
    the ACTION (sqlos.task_time, sqlserver.database_name, sqlserver.nt_username, sqlserver.sql_text, sqlserver.transaction_id, sqlserver.username) 
    the WHERE 
    - the AND [SQLServer] [database_name] = N'xxxx '-. the database name, modified self 
    -and sqlserver.username = N'xxxx '- database username, self-modifying 
    [ DURATION ] > = 3,000,000                     - consumption seconds over three seconds 
    )
 the ADD the TARGET package0.event_file ( the SET filename = N ' D: \ Tools \ the DBA \ EventLog \ slow_query.xel ' , MAX_FILE_SIZE = ( 10 ))     - path, file MB, voluntarily modify 
the WITH (STARTUP_STATE = ON )
 GO 
-   enabled (stop) event session (the START / sTOP)   
the ALTER eVENT sESSION slow_query ON SERVER STATE = the START  
 GO  

 

 

[2] GUI achieve

(Occurs when the Transact-SQL statement is completed) based sql_statement_completed

And query_post_execution_showplan (occurs after executing SQL statements. This event returns the XML representation of the actual query plan. Using this incident could have serious performance overhead so should only be used in this event only a short time to solve a specific problem or monitor. )

  (1) create a new session, the sql_statement_completed and query_post_execution_showplan events to elected

  

 

  (2) predicate screened duration greater than 3s and exclude system database, two events are so set

    

  (3) real-time monitoring, view the results

    

  (4) do modify, add global fields and event fields. The query_post_execution_showplan event plus the username global fields and databaseName

    

 

 

   (5) View added after the results of field

    

 

 

 

Related reference article:

  And introduce the concept of ~ https://blog.csdn.net/kk185800961/article/details/49725903

  The use GUI ~ https://www.cnblogs.com/lyhabc/p/3475132.html

 

msdn Extended Event: Click on the link to open

 [1] T-SQL to achieve

And sql_batch_completed incident (occurs when the batch is finished Transact-SQL) based rpc_completed (remote procedure call occurs when completed) event

转自:https://blog.csdn.net/yenange/article/details/52592814

--  删除事件会话  
IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name = 'slow_query')  
    DROP EVENT SESSION slow_query ON SERVER   
GO  
--  创建事件会话  
CREATE EVENT SESSION [slow_query] ON SERVER 
ADD EVENT sqlserver.rpc_completed(
    ACTION(sqlos.task_time,sqlserver.database_name,sqlserver.nt_username,sqlserver.sql_text,sqlserver.transaction_id,sqlserver.username)
    WHERE
    --AND [sqlserver].[database_name]=N'xxxx'    -- 数据库名, 自行修改
    --and sqlserver.username=N'xxxx'                -- 数据库用户名, 自行修改
    [duration]>=3000000                    -- 消耗秒数超 3 秒
    ),
ADD EVENT sqlserver.sql_batch_completed(
    ACTION(sqlos.task_time,sqlserver.database_name,sqlserver.nt_username,sqlserver.sql_text,sqlserver.transaction_id,sqlserver.username)
    WHERE
    --AND [sqlserver].[database_name]=N'xxxx'   -- 数据库名, 自行修改
    --and sqlserver.username=N'xxxx'                -- 数据库用户名, 自行修改
    [duration]>=3000000                    -- 消耗秒数超 3 秒
    )
ADD TARGET package0.event_file(SET filename=N'D:\Tools\DBA\EventLog\slow_query.xel',max_file_size=(10))    --路径、文件MB, 自行修改
WITH (STARTUP_STATE=ON)
GO
--  启用(停止)事件会话(START / STOP)  
ALTER EVENT SESSION slow_query ON SERVER STATE=START  
GO  

 

 

【2】GUI实现

基于 sql_statement_completed(Transact-SQL 语句已完成时发生)

和 query_post_execution_showplan (在执行 SQL 语句后发生。此事件返回实际查询计划的 XML 表示形式。使用此事件可能带来严重的性能开销,所以只有在短时间内解决或监视特定问题时才应使用此事件。)

  (1)新建会话,把sql_statement_completed 和 query_post_execution_showplan 事件给选上

  

 

  (2)谓词 筛选出持续时间大于3s的,并排除系统数据库,两个事件都这么设置

    

  (3)实时监控,查看结果

    

  (4)再做修改,加全局字段与事件字段。而query_post_execution_showplan事件加了username全局字段和databaseName

    

 

 

   (5)查看加了字段之后的结果

    

 

 

 

相关参考文章:

  概念与介绍~https://blog.csdn.net/kk185800961/article/details/49725903

  GUI的使用~https://www.cnblogs.com/lyhabc/p/3475132.html

 

Guess you like

Origin www.cnblogs.com/gered/p/10972807.html