확장 이벤트 개요Extended events overview

적용 대상: 예SQL Server 예Azure SQL Database 아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server yesAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server 확장 이벤트 아키텍처를 사용하여 성능 문제를 해결하거나 파악하는 데 필요한 만큼의 데이터만 수집할 수 있습니다.The Extended Events architecture enables users to collect as much or as little data as is necessary to troubleshoot or identify a performance problem. 확장 이벤트는 구성 가능하며 확장성이 매우 높습니다.Extended Events is configurable, and it scales very well.

확장 이벤트에 대한 자세한 내용은 빠른 시작: SQL Server의 확장 이벤트를 참조하세요.You can find more information about Extended Events at Quickstart: Extended events in SQL Server.

SQL ServerSQL Server 확장 이벤트의 이점Benefits of SQL ServerSQL Server Extended Events

확장 이벤트는 최소한의 성능 리소스를 사용하는 간단한 성능 모니터링 시스템입니다.Extended Events is a lightweight performance monitoring system that uses minimal performance resources. 확장 이벤트에서는 두 가지 그래픽 사용자 인터페이스가 제공되므로 세션 데이터를 작성, 수정, 표시 및 분석할 수 있습니다.Extended Events provides two graphical user interfaces to create, modify, display, and analyze your session data. 이러한 인터페이스의 이름은 다음과 같습니다.These interfaces are named:

  • 새 세션 마법사New Session Wizard
  • 새 세션New Session

확장 이벤트 개념Extended Events Concepts

SQL ServerSQL Server 확장 이벤트는 이벤트나 이벤트 소비자와 같은 기존 개념을 바탕으로 하고 Windows용 이벤트 추적의 개념을 사용하며 여기에 새로운 개념을 도입했습니다.Extended Events builds on existing concepts, such as an event or an event consumer, uses concepts from Event Tracing for Windows, and introduces new concepts.

다음 표는 확장 이벤트의 개념에 대해 설명합니다.The following table describes the concepts in Extended Events.

항목Topic 설명Description
SQL Server 확장 이벤트 패키지SQL Server Extended Events Packages 개체를 포함하는 확장 이벤트 패키지에 대해 설명합니다.Describes the Extended Events packages that contain objects. 이러한 개체는 확장 이벤트 세션이 실행 중일 때 데이터를 가져오고 처리하는 데 사용됩니다.These objects are used to obtain and process data when an Extended Events session is running.
SQL Server 확장 이벤트 대상SQL Server Extended Events Targets 이벤트 세션이 지속되는 동안 데이터를 수신할 수 있는 이벤트 소비자에 대해 설명합니다.Describes the event consumers that can receive data during an event session.
SQL Server 확장 이벤트 엔진SQL Server Extended Events Engine 확장 이벤트 세션을 구현 및 관리하는 엔진에 대해 설명합니다.Describes the engine that implements and manages an Extended Events session.
SQL Server 확장 이벤트 세션SQL Server Extended Events Sessions 확장 이벤트 세션에 대해 설명합니다.Describes the Extended Events session.
   

확장 이벤트 아키텍처Extended Events Architecture

확장 이벤트는 서버 시스템을 위한 일반적인 이벤트 처리 시스템을 지칭하는 이름입니다.Extended Events is our name for a general event-handling system for server systems. 확장 이벤트 인프라는 SQL ServerSQL Server데이터와의 연계가 가능하고 특정 조건에서는 운영 체제 및 데이터베이스 애플리케이션 데이터와 연계해서 사용할 수 있는 기능도 지원합니다.The Extended Events infrastructure supports the correlation of data from SQL ServerSQL Server, and under certain conditions, the correlation of data from the operating system and database applications. 운영 체제의 경우 확장 이벤트 출력이 ETW(Windows용 이벤트 추적)로 전달되어야 합니다.In the operating system case, Extended Events output must be directed to Event Tracing for Windows (ETW). ETW는 이벤트 데이터와 Windows 운영 체제 또는 애플리케이션 이벤트 데이터의 상관 관계를 파악할 수 있습니다.ETW can correlate the event data with operating system or application event data.

모든 애플리케이션에는 애플리케이션 내부 및 외부 모두에서 유용한 실행 지점이 있습니다.All applications have execution points that are useful both inside and outside an application. 애플리케이션 내부에서는 태스크의 초기 실행 중에 수집된 정보를 사용하여 비동기 처리를 큐에 넣을 수 있습니다.Inside the application, asynchronous processing may be enqueued using information that is collected during the initial execution of a task. 애플리케이션 외부에서 실행 지점은 정보와 함께 모니터링 유틸리티를 제공합니다.Outside the application, execution points provide monitoring utilities with information. 이 정보는 모니터링되는 애플리케이션의 동작 및 성능 특성에 대한 정보입니다.The information is about the behavioral and performance characteristics of the monitored application.

확장 이벤트는 프로세스 외부에서의 이벤트 데이터 사용을 지원하며Extended Events supports using event data outside a process. 이러한 데이터는 일반적으로 다음에서 사용됩니다.This data is typically used by:

  • SQL 추적 및 시스템 모니터와 같은 추적 도구Tracing tools, such as SQL Trace and System Monitor.

  • Windows 이벤트 로그 또는 SQL ServerSQL Server 오류 로그 등의 로깅 도구Logging tools, such as the Windows event log or the SQL ServerSQL Server error log.

  • 제품을 관리하거나 제품의 애플리케이션을 개발하는 사용자Users administering a product or developing applications on a product.

확장 이벤트는 다음과 같은 주요 요소를 고려하여 디자인되었습니다.Extended Events has the following key design aspects:

  • 확장 이벤트 엔진은 이벤트 중립적입니다.The Extended Events engine is event agnostic. 이 엔진은 이벤트 내용에 따른 제한이 없으므로 모든 이벤트를 모든 대상에 바인딩할 수 있습니다.The engine can bind any event to any target, because the engine is not constrained by event content. 확장 이벤트 엔진에 대한 자세한 내용은 SQL Server Extended Events Engine을 참조하십시오.For more information about the Extended Events engine, see SQL Server Extended Events Engine.

  • 이벤트는 확장 이벤트의 대상 이라고 하는 이벤트 소비자와 분리됩니다.Events are separated from event consumers, which are called targets in Extended Events. 따라서 모든 대상이 모든 이벤트를 수신할 수 있습니다.This means that any target can receive any event. 또한 발생한 모든 이벤트는 대상에서 자동으로 사용되므로 추가 이벤트 컨텍스트가 기록되거나 제공될 수 있습니다.In addition, any event that is raised can be automatically consumed by the target, which can log or provide additional event context. 자세한 내용은 SQL Server Extended Events Targets을 참조하세요.For more information, see SQL Server Extended Events Targets.

  • 이벤트는 이벤트가 발생할 때 실행되는 동작과는 별개입니다.Events are distinct from the action to take when an event occurs. 따라서 모든 이벤트에 모든 동작을 연결할 수 있습니다.Therefore, any action can be associated with any event.

  • 조건자를 사용하면 이벤트 데이터를 캡처해야 할 때를 동적으로 필터링할 수 있으므로Predicates can dynamically filter when event data should be captured. 동적 필터링을 통해 확장 이벤트 인프라의 유연성이 높아집니다.Dynamic filtering adds to the flexibility of the Extended Events infrastructure. 자세한 내용은 SQL Server Extended Events Packages을 참조하세요.For more information, see SQL Server Extended Events Packages.

확장 이벤트는 이벤트 데이터를 동기적으로 생성하고 데이터를 비동기적으로 처리하여 유연한 이벤트 처리 솔루션을 제공합니다.Extended Events can synchronously generate event data (and asynchronously process that data) which provides a flexible solution for event handling. 또한 확장 이벤트는 다음 기능도 지원합니다.In addition, Extended Events provides the following features:

  • 사용자가 문제 해결을 위해 특정 이벤트를 격리할 수 있도록 허용하면서 서버 시스템 전체에서 일관된 이벤트 처리 방식A unified approach to handling events across the server system, while enabling users to isolate specific events for troubleshooting purposes.

  • 기존 ETW 도구 통합 및 지원Integration with, and support for existing ETW tools.

  • Transact-SQLTransact-SQL을 기반으로 하는 완전히 구성 가능한 이벤트 처리 메커니즘A fully configurable event handling mechanism that is based on Transact-SQLTransact-SQL.

  • 활성 프로세스에 거의 영향을 주지 않고 동적으로 이를 모니터링할 수 있는 기능The ability to dynamically monitor active processes, while having minimal effect on those processes.

  • 성능에 크게 영향을 주지 않고 실행되는 기본 시스템 상태 세션.A default system health session that runs without any noticeable performance effects. 이 세션은 성능 문제를 해결하는 데 사용할 수 있는 시스템 데이터를 수집합니다.The session collects system data that you can use to help troubleshoot performance issues. 자세한 내용은 system_health 세션 사용을 참조하세요.For more information, see Use the system_health Session.

확장 이벤트 태스크Extended Events Tasks

Management StudioManagement Studio 또는 Transact-SQLTransact-SQL 을 사용하여 Transact-SQLTransact-SQL DDL(데이터 정의 언어) 문, 동적 관리 뷰와 함수 또는 카탈로그 뷰를 실행하면 사용 중인 SQL ServerSQL Server 환경에 맞는 간단하거나 복잡한 SQL ServerSQL Server 확장 이벤트 문제 해결 솔루션을 만들 수 있습니다.Using Management StudioManagement Studio or Transact-SQLTransact-SQL to execute Transact-SQLTransact-SQL Data Definition Language (DDL) statements, dynamic management views and functions, or catalog views, you can create simple or complex SQL ServerSQL Server Extended Events troubleshooting solutions for your SQL ServerSQL Server environment.

태스크 설명Task Description 항목Topic
개체 탐색기 를 사용하여 이벤트 세션을 관리합니다.Use the Object Explorer to manage event sessions. 개체 탐색기에서 이벤트 세션 관리Manage Event Sessions in the Object Explorer
확장 이벤트 세션을 만드는 방법에 대해 설명합니다.Describes how to create an Extended Events session. 확장 이벤트 세션 만들기Create an Extended Events Session
대상 데이터를 보고 새로 고치는 방법에 대해 설명합니다.Describes how to view and refresh target data. SQL Server 확장 이벤트의 대상 데이터 고급 보기Advanced Viewing of Target Data from Extended Events in SQL Server
확장 이벤트 도구를 사용하여 SQL ServerSQL Server 확장 이벤트 세션을 만들고 관리하는 방법에 대해 설명합니다.Describes how to use Extended Events tools to create and manage your SQL ServerSQL Server Extended Events sessions. 확장 이벤트 도구Extended Events Tools
확장 이벤트 세션을 변경하는 방법에 대해 설명합니다.Describes how to alter an Extended Events session. 확장 이벤트 세션 변경Alter an Extended Events Session
이벤트와 관련된 필드에 대한 정보를 가져오는 방법에 대해 설명합니다.Describes how to get information about the fields associated with the events. 모든 이벤트에 대한 필드 가져오기Get the Fields for All Events
등록된 패키지에서 사용할 수 있는 이벤트를 확인하는 방법에 대해 설명합니다.Describes how to find out what events are available in the registered packages. 등록된 패키지에 대한 이벤트 보기View the Events for Registered Packages
등록된 패키지에서 사용할 수 있는 확장 이벤트 대상을 확인하는 방법에 대해 설명합니다.Describes how to determine what Extended Events targets are available in the registered packages. 등록된 패키지의 확장 이벤트 대상 보기View the Extended Events Targets for Registered Packages
각 SQL 추적 이벤트 및 관련 열에 해당하는 확장 이벤트의 이벤트 및 동작을 확인하는 방법에 대해 설명합니다.Describes how to view the Extended Events events and actions that are equivalent to each SQL Trace event and its associated columns. SQL 추적 이벤트 클래스에 해당하는 확장 이벤트 항목 확인View the Extended Events Equivalents to SQL Trace Event Classes
CREATE EVENT SESSION 또는 ALTER EVENT SESSION에 ADD TARGET 인수를 사용할 경우에 설정할 수 있는 매개 변수를 확인하는 방법에 대해 설명합니다.Describes how to find the parameters you can set when you use the ADD TARGET argument in CREATE EVENT SESSION or ALTER EVENT SESSION. ADD TARGET 인수에 대한 구성 가능한 매개 변수 가져오기Get the Configurable Parameters for the ADD TARGET Argument
기존 SQL 추적 스크립트를 확장 이벤트 세션으로 변환하는 방법에 대해 설명합니다.Describes how to convert an existing SQL Trace script to an Extended Events session. 기존 SQL 추적 스크립트를 확장 이벤트 세션으로 변환Convert an Existing SQL Trace Script to an Extended Events Session
잠금을 보유 중인 쿼리, 쿼리 계획 및 잠긴 시점의 Transact-SQLTransact-SQL 스택을 확인하는 방법에 대해 설명합니다.Describes how to determine which queries are holding the lock, the plan of the query, and the Transact-SQLTransact-SQL stack at the time the lock was taken. 잠금을 보유한 쿼리 파악Determine Which Queries Are Holding Locks
데이터베이스 성능을 저하시키는 잠금의 원인을 파악하는 방법에 대해 설명합니다.Describes how to identify the source of locks that are hindering database performance. 가장 많은 잠금이 발생한 개체 찾기Find the Objects That Have the Most Locks Taken on Them
확장 이벤트를 Windows용 이벤트 추적과 함께 사용하여 시스템 작업을 모니터링하는 방법에 대해 설명합니다.Describes how to use Extended Events with Event Tracing for Windows to monitor system activity. 확장 이벤트를 사용하여 시스템 작업 모니터링Monitor System Activity Using Extended Events
확장 이벤트 대해 카탈로그 뷰 및 DMV(동적 관리 뷰) 사용Using the Catalog views and the Dynamic management views (DMVs) for extended events SQL Server 확장 이벤트에 대한 시스템 뷰의 SELECT 및 JOINSELECTs and JOINs From System Views for Extended Events in SQL Server
   

코드 예제는 Azure SQL Database와 다를 수 있음Code examples can differ for Azure SQL Database

SQL Server 온-프레미스용으로 작성된 일부 Transact-SQL 코드 예제를 클라우드의 Azure SQL Database 서비스에서 실행하려면 몇 가지 사항을 변경해야 합니다.Some Transact-SQL code examples written for SQL Server on-premises need small changes to run on Azure SQL Database service in the cloud. 이러한 코드 예제의 한 가지 범주로 두 데이터베이스 시스템에서 다음과 같이 이름 접두사에 약간 차이가 있는 시스템 뷰가 있습니다.One catagory of such code examples involves system views whose name prefixess differ slightly between the two database systems:

  • server_   -   온-프레미스의 접두사server_   -   prefix for on-premises
  • database_   -   클라우드 Azure SQL DB 서비스의 접두사database_   -   prefix for Azure SQL DB service in the cloud

예시를 위해 다음 표에서는 시스템 뷰의 두 하위 집합을 나열하고 비교합니다.For illustration, the following table lists and compares two subsets of the system views. 알아보기 쉽도록 하위 집합은 _event 문자열을 포함하는 뷰 이름으로 제한되었습니다.For brevity, the subsets are restricted to view names that also contains the string _event. 하위 집합은 각기 다른 두 데이터베이스 시스템에서 가져왔기 때문에 이름 접두사가 서로 다릅니다.The subsets have differing name prefixes because they come the two different database systems.

온-프레미스 2017의 이름Name from on-premises 2017 클라우드 서비스의 이름Name from cloud service
server_event_notificationsserver_event_notifications
server_event_session_actionsserver_event_session_actions
server_event_session_eventsserver_event_session_events
server_event_session_fieldsserver_event_session_fields
server_event_session_targetsserver_event_session_targets
server_event_sessionsserver_event_sessions
server_eventsserver_events
server_trigger_eventsserver_trigger_events
database_event_session_actionsdatabase_event_session_actions
database_event_session_eventsdatabase_event_session_events
database_event_session_fieldsdatabase_event_session_fields
database_event_session_targetsdatabase_event_session_targets
database_event_sessionsdatabase_event_sessions
   

위의 표에 나와 있는 두 목록은 2019년 6월을 기준으로 정확하게 표시되었습니다.The two lists in the preceding table are accurate as of June 2019. 그러나 여기에 제공된 표 내용은 유지 관리되지 않으므로 만료될 수 있습니다.But the table contents here may become outdated, because its content will not be maintained here. 정확한 목록을 보려면 다음 T-SQL SELECT 문을 실행합니다.For accurate lists, run the following T-SQL SELECT statement. 각 데이터베이스 시스템에서 한 번씩, SELECT를 두 번 실행합니다.Run the SELECT twice, once on each database system.

SELECT name
    FROM sys.all_objects
    WHERE
        (name LIKE 'database\_%' { ESCAPE '\' } OR
         name LIKE 'server\_%' { ESCAPE '\' })
        AND name LIKE '%\_event%' { ESCAPE '\' }
        AND type = 'V'
    ORDER BY name;

참고 항목See Also

데이터 계층 애플리케이션Data-tier Applications
SQL Server 개체 및 버전에 대한 DAC 지원DAC Support For SQL Server Objects and Versions
데이터 계층 애플리케이션 배포Deploy a Data-tier Application
데이터 계층 애플리케이션 모니터링Monitor Data-tier Applications
 
확장 이벤트 동적 관리 뷰Extended Events Dynamic Management Views
확장 이벤트 카탈로그 뷰(Transact-SQL)Extended Events Catalog Views (Transact-SQL)
 
XELite: XEL 파일 또는 라이브 SQL 스트림에서 XEvents를 읽을 수 있는 플랫폼 간 라이브러리, 2019년 5월에 릴리스됨.XELite: Cross-platform library to read XEvents from XEL files or live SQL streams, released May 2019.
Read-SQLXEvent PowerShell cmdlet 2019년 6월 릴리스.Read-SQLXEvent PowerShell cmdlet, released June 2019.
SQL Mysteries: XEvent 세션의 인과 관계 추적 및 이벤트 순서(블로그 게시일 2019년 4월 1일)SQL Mysteries: Causality tracking vs Event Sequence for XEvent Sessions (blog published April 1, 2019)