SQL Server 확장 이벤트 세션SQL Server Extended Events Sessions

이 항목은 다음에 적용됩니다.예SQL Server(2014부터)예Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2014)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server 확장 이벤트 세션은 확장 이벤트 엔진을 호스팅하는 SQL ServerSQL Server 프로세스에서 생성됩니다.A SQL ServerSQL Server Extended Events session is created in the SQL ServerSQL Server process hosting the Extended Events engine. 확장 이벤트 세션의 다음과 같은 요소는 확장 이벤트 인프라 및 일반적인 프로세스를 파악할 수 있는 컨텍스트를 제공합니다.The following aspects of an Extended Events session provide a context for understanding the Extended Events infrastructure and the general processing that takes place:

  • 세션 상태.Session states. CREATE EVENT SESSION 및 ALTER EVENT SESSION 문이 실행될 때 확장 이벤트 세션의 상태입니다.The different states that an Extended Events session is in when CREATE EVENT SESSION and ALTER EVENT SESSION statements are executed.

  • 세션 내용 및 특징.Session content and characteristics. 대상 및 이벤트 같은 확장 이벤트 세션의 내용과 이러한 개체가 단일 세션에서 또는 여러 세션 간에 상호 관련되는 방식입니다.The content of an Extended Events session, such as targets and events, and how these objects are related in a session or between sessions.

세션 상태Session States

다음 그림에서는 확장 이벤트 세션의 다양한 상태를 보여 줍니다.The following illustration shows the various states of an Extended Events session.

확장 이벤트 세션 상태Extended event session state

위 그림을 보면 이벤트 세션에 대해 다른 DDL 명령이 실행됨에 따라 세션 상태가 바뀜을 알 수 있습니다.Referring to the preceding figure, note that session state changes as the different DDL commands are issued for an event session. 다음 표에서는 이러한 상태 변경을 설명합니다.The following table describes these changes in state.

그림 레이블Illustration label DDL 문DDL statement 설명Description
만들기Create CREATE EVENT SESSIONCREATE EVENT SESSION 호스트 프로세스는 CREATE EVENT SESSION 문에서 제공된 메타데이터가 포함된 세션 개체를 만듭니다.The host process creates a session object that contains the metadata provided by CREATE EVENT SESSION. 호스트 프로세스는 세션 정의 및 사용자 권한 수준을 검사하고 master 데이터베이스에 메타데이터를 저장합니다.The host process validates the session definition, validates the user permission level, and stores the metadata in the master database. 이 시점에서 세션은 활성 상태가 아닙니다.At this point the session is not active.
AlterAlter ALTER EVENT SESSION, STATE=STARTALTER EVENT SESSION, STATE=START 호스트 프로세스가 세션을 시작합니다.The host process starts the session. 호스트 프로세스는 저장된 메타데이터를 읽고 세션 정의를 검사하며 사용자 권한 수준을 확인하고 세션을 만듭니다.The host process reads the stored metadata, validates the session definition, verifies the level of user permission level, and creates the session. 이벤트 및 대상과 같은 세션 개체가 로드되며 이벤트 처리는 활성 상태입니다.Session objects, such as events and targets, are loaded and event handling is active.
AlterAlter ALTER EVENT SESSION, STATE=STOPALTER EVENT SESSION, STATE=STOP 호스트 프로세스가 활성 세션을 중지하지만 메타데이터는 유지됩니다.The host process stops the active session but retains the metadata.
DropDrop DROP EVENT SESSIONDROP EVENT SESSION 세션이 활성 상태인지 여부에 따라 Drop(DROP SESSION)은 메타데이터를 삭제하고 활성 세션을 종료하거나 세션 메타데이터를 삭제합니다.Depending on whether or not the session is active, Drop (DROP SESSION) will delete the metadata and close the active session, or delete the session metadata.
참고

ALTER EVENT SESSION과 DROP EVENT SESSION 두 가지 모두 메타데이터에 적용되거나 활성 세션과 메타데이터에 적용될 수 있습니다.Both ALTER EVENT SESSION and DROP EVENT SESSION can be applied to the metadata or to an active session and the metadata.

세션 내용 및 특징Session Content and Characteristics

확장 이벤트 세션에는 암시적인 경계가 있어 한 세션의 구성으로 인해 다른 세션의 구성이 변경되지 않습니다.Extended Event sessions have implied boundaries in that the configuration of one session does not change the configuration of another session. 그러나 이러한 경계는 이벤트 또는 대상이 두 개 이상의 세션에서 사용되는 것을 차단하지는 않습니다.However, these boundaries do not prevent an event or target from being used in more than one session.

다음 그림에서는 세션 내용, 그리고 패키지와 세션 간의 관계를 보여 줍니다.The following illustration shows session content and the relationship between packages and sessions.

세션에서의 개체 공존 및 공유Object co-existance and sharing in sessions.

위 그림을 보면 다음과 같은 사실을 알 수 있습니다.Referring to the preceding illustration, note that:

  • 패키지 개체와 세션 간의 매핑은 다 대 다이며, 이는 하나의 개체가 여러 세션에서 나타나고 하나의 세션에 여러 개체가 포함될 수 있음을 의미합니다.The mapping between package objects and sessions is many to many, which means that that an object can appear in several sessions, and a session can contain several objects.

  • 동일한 이벤트(Event 1) 또는 대상(Target 1)이 두 개 이상의 세션에서 사용될 수 있습니다.The same event (Event 1) or target (Target 1) can be enabled in more than one session.

    세션의 특징은 다음과 같습니다.Sessions have the following characteristics:

  • 동작과 조건자는 세션별로 이벤트에 바인딩됩니다.Actions and predicates are bound to events on a per-session basis. Session A에 Action 1, Predicate Z와 함께 Event 1이 있어도 Session B에 조건자 없이 Action 2, Action 3과 함께 Event 1이 있을 수 있습니다.If you have Event 1 in Session A with Action 1 and Predicate Z, this will not in any way affect having Event 1 in Session B with Action 2 and Action 3 with no predicate.

  • 정책이 세션에 연결되어 버퍼링과 디스패치, 인과 관계 추적을 처리합니다.Policies are attached to sessions to handle buffering and dispatch, and causality tracking.

    버퍼링 및 디스패치Buffering and dispatch

    버퍼링은 이벤트 세션이 실행되는 동안 이벤트 데이터가 저장되는 방식입니다.Buffering refers to how event data is stored while an event session is running. 버퍼링 정책은 이벤트 데이터에 사용할 메모리 크기와 이벤트에 대한 손실 정책을 지정합니다.Buffering policies specify how much memory to use for event data, and the loss policy for the events. 디스패치는 이벤트를 처리하기 위해 대상에 전달하기 전에 버퍼에 유지하는 시간입니다.Dispatch refers to the amount of time events will stay in buffers before being served to targets for processing.

    인과 관계 추적Causality tracking

    인과 관계 추적은 여러 태스크에 걸쳐 작업을 추적할 수 있는 기능을 제공합니다.Causality tracking provides the ability to track work across multiple tasks. 인과 관계 추적을 사용하면 각 발생 이벤트는 시스템 전체에서 고유한 작업 ID를 갖게 됩니다.When causality tracking is enabled, each event fired has a unique activity ID across the system. 작업 ID는 태스크에 대한 모든 이벤트에서 일관적으로 유지되는 GUID 값과 이벤트가 발생할 때마다 증가하는 시퀀스 번호의 조합입니다.The activity ID is a combination of a GUID value that remains constant across all events for a task, and a sequence number that is incremented each time an event is fired. 한 태스크가 다른 태스크의 작업 수행을 유발하면 부모 태스크의 작업 ID가 자식 태스크로 전송됩니다.When one task causes work to be done on another, the activity ID of the parent is sent to the child task. 자식 태스크는 처음 이벤트를 발생시킬 때 부모의 작업 ID를 출력합니다.The child task outputs the parent’s activity ID the first time it fires an event.

    확장 이벤트 아키텍처는 다양한 개체를 함께 사용하여 특정 문제를 처리할 수 있는 유연한 시스템을 제공합니다.The Extended Events architecture provides a flexible system that allows a variety of objects to be used together to solve specific problems.

참고 항목See Also

확장 이벤트Extended Events