Amazon RDS for Microsoft SQL Server에 확장 이벤트 사용 - Amazon Relational Database Service

Amazon RDS for Microsoft SQL Server에 확장 이벤트 사용

Microsoft SQL Server의 확장 이벤트를 사용하여 Amazon RDS for SQL Server에 대한 디버깅 및 문제 해결 정보를 캡처할 수 있습니다. 확장 이벤트는 Microsoft에서 더 이상 사용되지 않는 SQL 추적 및 서버 프로파일러를 대체합니다. 확장 이벤트는 프로파일러 추적과 유사하지만 추적되는 이벤트를 보다 세부적으로 제어할 수 있습니다. Amazon RDS에서 확장 이벤트는 SQL Server 버전 2014 이상에 대해 지원됩니다. 자세한 내용은 Microsoft 설명서의 Extended events overview를 참조하세요.

확장 이벤트는 Amazon RDS for SQL Server에서 마스터 사용자 권한이 있는 사용자에 대해 자동으로 활성화됩니다.

제한 및 권장 사항

RDS for SQL Server에서 확장 이벤트를 사용하는 경우 다음과 같은 제한 사항이 적용됩니다.

  • 확장 이벤트는 Enterprise 및 Standard Edition에 대해서만 지원됩니다.

  • 기본 확장 이벤트 세션은 변경할 수 없습니다.

  • 세션 메모리 파티션 모드를 NONE으로 설정해야 합니다.

  • 세션 이벤트 보존 모드는 ALLOW_SINGLE_EVENT_LOSS 또는 ALLOW_MULTIPLE_EVENT_LOSS일 수 있습니다.

  • ETW(Event Tracing for Windows) 대상은 지원되지 않습니다.

  • 파일 대상이 D:\rdsdbdata\log 디렉터리에 있어야 합니다.

  • 페어 매칭 대상의 경우 respond_to_memory_pressure 속성을 1로 설정합니다.

  • 링 버퍼 대상 메모리는 4MB를 초과할 수 없습니다.

  • 다음은 지원되지 않는 작업입니다.

    • debug_break

    • create_dump_all_threads

    • create_dump_single_threads

  • rpc_completed 이벤트는 다음 버전 이상에서 지원됩니다. 15.0.4083.2, 14.0.3370.1, 13.0.5865.1, 12.0.6433.1, 11.0.7507.2.

RDS for SQL Server에 대한 확장 이벤트 구성

RDS for SQL Server에서 확장 이벤트 세션의 특정 파라미터 값을 구성할 수 있습니다. 다음 표에서는 구성 가능한 파라미터에 대해 설명합니다.

파라미터 이름 설명 RDS 기본값 최소값 최대값
xe_session_max_memory 이벤트 버퍼링을 위해 세션에 할당할 최대 메모리 양을 지정합니다. 이 값은 이벤트 세션의 max_memory 설정에 해당합니다. 4MB 4MB 8MB
xe_session_max_event_size 큰 이벤트에 허용되는 최대 메모리 크기를 지정합니다. 이 값은 이벤트 세션의 max_event_size 설정에 해당합니다. 4MB 4MB 8MB
xe_session_max_dispatch_latency 이벤트가 확장 이벤트 세션 대상으로 전달되기 전에 메모리에서 버퍼링되는 시간을 지정합니다. 이 값은 이벤트 세션의 max_dispatch_latency 설정에 해당합니다. 30초 1초 30초
xe_file_target_size 파일 대상의 최대 크기를 지정합니다. 이 값은 파일 대상의 max_file_size 설정에 해당합니다. 100MB 10MB 1GB
xe_file_retention 이벤트 세션의 파일 대상에서 생성된 파일의 보존 시간(일)을 지정합니다. 7일 0일 7일
참고

xe_file_retention을 0으로 설정하면 SQL Server가 해당 파일에 대한 잠금을 해제한 후에 .xel 파일이 자동으로 제거됩니다. .xel 파일이 xe_file_target_size에 설정된 크기 제한에 도달할 때마다 잠금이 해제됩니다.

rdsadmin.dbo.rds_show_configuration 저장 프로시저를 사용하여 이러한 파라미터의 현재 값을 표시할 수 있습니다. 예를 들어 xe_session_max_memory의 현재 설정을 보려면 다음 SQL 문을 사용합니다.

exec rdsadmin..rds_show_configuration 'xe_session_max_memory'

rdsadmin.dbo.rds_set_configuration 저장 프로시저를 사용하여 설정을 수정할 수 있습니다. 예를 들어 xe_session_max_memory를 4MB로 설정하려면 다음 SQL 문을 사용합니다.

exec rdsadmin..rds_set_configuration 'xe_session_max_memory', 4

다중 AZ 배포에 대한 고려 사항

기본 DB 인스턴스에서 확장 이벤트 세션을 생성하면 예비 복제본으로 전파되지 않습니다. 장애 조치하고, 새 기본 DB 인스턴스에서 확장 이벤트 세션을 생성할 수 있습니다. 또는 다중 AZ 구성을 제거한 다음 다시 추가하여 확장 이벤트 세션을 대기 복제본에 전파할 수 있습니다. RDS는 대기 복제본에서 기본이 아닌 모든 확장 이벤트 세션을 중지하므로, 이러한 세션은 대기 복제본에서 리소스를 소모하지 않습니다. 따라서 예비 복제본이 기본 DB 인스턴스가 된 후에는 새 기본 복제본에서 확장 이벤트 세션을 수동으로 시작해야 합니다.

참고

이 방법은 Always On 가용성 그룹과 데이터베이스 미러링에 모두 적용됩니다.

SQL Server 에이전트 작업을 사용하여 대기 복제본을 추적하고, 대기 복제본이 기본 복제본이 될 경우 세션을 시작할 수도 있습니다. 예를 들어 SQL Server 에이전트 작업 단계에서 다음 쿼리를 사용하여 기본 DB 인스턴스의 이벤트 세션을 다시 시작합니다.

BEGIN IF (DATABASEPROPERTYEX('rdsadmin','Updateability')='READ_WRITE' AND DATABASEPROPERTYEX('rdsadmin','status')='ONLINE' AND (DATABASEPROPERTYEX('rdsadmin','Collation') IS NOT NULL OR DATABASEPROPERTYEX('rdsadmin','IsAutoClose')=1) ) BEGIN IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe1') ALTER EVENT SESSION xe1 ON SERVER STATE=START IF NOT EXISTS (SELECT 1 FROM sys.dm_xe_sessions WHERE name='xe2') ALTER EVENT SESSION xe2 ON SERVER STATE=START END END

이 쿼리는 해당 세션이 중지 상태인 경우, 기본 DB 인스턴스에서 이벤트 세션 xe1xe2를 다시 시작합니다. 이 쿼리에 편리한 간격으로 일정을 추가할 수도 있습니다.

확장 이벤트 파일 쿼리

SQL Server Management Studio 또는 sys.fn_xe_file_target_read_file 함수를 사용하여 파일 대상을 사용하는 확장 이벤트의 데이터를 볼 수 있습니다. 이 함수에 대한 자세한 내용은 Microsoft 설명서의 sys.fn_xe_file_target_read_file(Transact-SQL)을 참조하세요.

확장 이벤트 파일 대상은 RDS for SQL Server의 D:\rdsdbdata\log 디렉터리에만 파일을 쓸 수 있습니다.

예를 들어 이름이 xe로 시작하는 확장 이벤트 세션의 모든 파일의 내용을 나열하려면 다음 SQL 쿼리를 사용합니다.

SELECT * FROM sys.fn_xe_file_target_read_file('d:\rdsdbdata\log\xe*', null,null,null);