확장 이벤트 세션

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

확장 이벤트 세션은 확장 이벤트 엔진을 호스팅하는 SQL Server 데이터베이스 엔진 프로세스에서 만들어집니다. 확장 이벤트 세션의 다음 측면은 확장 이벤트 인프라 및 발생하는 처리를 이해하기 위한 컨텍스트를 제공합니다.

  • 세션 상태입니다. 확장 이벤트 세션이 실행될 때 CREATE EVENT SESSIONALTER EVENT SESSION 문이 실행되는 다양한 상태입니다.

  • 세션 콘텐츠 및 특성 대상 및 이벤트와 같은 확장 이벤트 세션의 콘텐츠와 이러한 개체가 세션 또는 세션 간에 관련되는 방식입니다.

세션 상태

다음 그림에서는 확장 이벤트 세션의 다양한 상태를 보여 줍니다.

Diagram showing Extended Events session state.

앞의 그림을 참조하여 이벤트 세션에 대해 다른 DDL(데이터 정의 언어) 명령이 실행됨에 따라 세션 상태가 변경되는 것을 관찰합니다. 다음 표에서는 이러한 상태 변경에 대해 설명합니다.

일러스트레이션 레이블 DDL 문 설명
만들기 CREATE EVENT SESSION 호스트 프로세스는 에서 제공하는 메타데이터를 포함하는 세션 개체를 CREATE EVENT SESSION만듭니다. 호스트 프로세스는 세션 정의의 유효성을 검사하고, 사용자 권한 수준의 유효성을 검사하고, 메타데이터를 데이터베이스에 master 저장합니다. 이 시점에서 세션이 활성화되지 않습니다.
변경 ALTER EVENT SESSION, STATE=START 호스트 프로세스가 세션을 시작합니다. 호스트 프로세스는 저장된 메타데이터를 읽고, 세션 정의의 유효성을 검사하고, 사용자 권한 수준의 수준을 확인하고, 세션을 만듭니다. 이벤트 및 대상과 같은 세션 개체가 로드되고 이벤트 처리가 활성화됩니다.
변경 ALTER EVENT SESSION, STATE=STOP 호스트 프로세스는 활성 세션을 중지하지만 메타데이터를 유지합니다.
Drop DROP EVENT SESSION 세션이 활성 상태인지 여부에 따라 Drop(DROP SESSION)은 메타데이터를 삭제하고 활성 세션을 닫거나 세션 메타데이터를 삭제합니다.

세션 콘텐츠 및 특성

확장 이벤트 세션에는 한 세션의 구성이 다른 세션의 구성을 변경하지 않는다는 암시적 경계가 있습니다. 그러나 이러한 경계는 이벤트 또는 대상 형식이 둘 이상의 세션에서 사용되는 것을 방지하지 않습니다.

다음 그림에서는 세션 콘텐츠와 패키지와 세션 간의 관계를 보여 줍니다.

Diagram showing object coexistence and sharing in sessions.

앞의 그림을 참조하여 다음 사항에 유의하세요.

  • 패키지 개체와 세션 간의 매핑은 다 대 다입니다. 즉, 특정 형식의 개체가 여러 세션에 나타날 수 있으며 세션에 여러 개체가 포함될 수 있습니다.
  • 동일한 이벤트(이벤트 1) 또는 대상 유형(대상 1)을 둘 이상의 세션에서 사용할 수 있습니다.

세션의 특징은 다음과 같습니다.

  • 작업 및 조건자는 세션별로 이벤트에 바인딩됩니다. 작업 1 및 조건자 Z가 있는 세션 A에 이벤트 1이 있는 경우 이는 조건자가 없는 Action 2 및 Action 3이 있는 세션 B에서 이벤트 1을 갖는 데 어떤 식으로든 영향을 주지 않습니다.
  • 정책이 세션에 연결되어 버퍼링과 디스패치, 인과 관계 추적을 처리합니다.

버퍼링은 이벤트 세션이 실행되는 동안 이벤트 데이터가 저장되는 방식을 나타냅니다. 버퍼링 정책은 이벤트 데이터에 사용할 메모리 양과 이벤트에 대한 손실 정책을 지정합니다. 디스패치는 처리 대상에 제공되기 전에 이벤트가 버퍼에 유지되는 기간을 나타냅니다.

인과 관계 추적 은 여러 작업에서 작업을 추적합니다. 인과 관계 추적을 사용하도록 설정하면 발생한 각 이벤트에는 시스템 전체에서 고유한 활동 ID가 있습니다. 작업 ID는 작업에 대한 모든 이벤트에서 상수를 다시 기본 GUID 값과 이벤트가 발생할 때마다 증가하는 시퀀스 번호의 조합입니다. 한 작업으로 인해 다른 작업에서 작업이 수행되면 부모의 활동 ID가 자식 작업으로 전송됩니다. 자식 태스크는 처음 이벤트를 발생시킬 때 부모의 작업 ID를 출력합니다.