RDS for Microsoft SQL Server에서 추적 플래그 설정
SQL Server 추적 플래그는 데이터베이스 엔진의 동작 방식을 변경하기 위해 활성화하거나 비활성화할 수 있는 설정입니다. 추적 플래그를 사용하여 숨겨진 기능을 활성화하거나, 성능 문제를 해결하거나, 기본 서버 동작을 재정의할 수 있습니다. 실제로 각 추적 플래그는 SQL Server의 기본 동작을 변경하는 켜기/끄기 스위치 역할을 합니다.
Microsoft SQL Server에서 사용 가능한 추적 플래그의 전체 목록은 Microsoft 설명서의 DBCC TRACEON - Trace Flags
RDS for SQL Server는 관리형 서비스로서 글로벌 서버 수준의 설정을 제한합니다. RDS for SQL Server DB 파라미터 그룹을 통해 특정 추적 플래그만 시작 파라미터로 구성할 수 있습니다. 다음 표에는 RDS for SQL Server에서 지원하는 추적 플래그가 나열되어 있습니다.
중요
프로덕션 환경에서 추적 플래그를 활성화하기 전에 철저히 테스트하고 검증하는 것이 좋습니다. 추적 플래그는 성능 튜닝과 문제 해결에 유용하지만, 잘못 사용할 경우 시스템 불안정, 최적화되지 않은 쿼리 계획 또는 리소스 문제를 초래할 수 있습니다.
| 추적 플래그 | 설명 |
|---|---|
647 |
SQL Server 2012에서 도입된 데이터 유효성 검사를 건너뜁니다. 이 검사는 |
652 |
스캔에 대한 페이지 미리 가져오기를 비활성화합니다. 이 플래그를 활성화하면 SQL Server가 버퍼 풀에 페이지를 미리 로드하는 것을 중지합니다. 이로 인해 미리 가져오기에 의존하는 쿼리의 성능이 저하될 수 있습니다. |
692 |
힙 또는 클러스터형 인덱스에 데이터를 대량 로드할 때 빠른 삽입을 비활성화합니다(SQL Server 2016 이상에서 지원). |
1204 |
교착 상태에 관여하는 리소스 및 잠금 유형과 영향을 받는 현재 명령을 반환합니다. |
1211 |
메모리 부족이나 잠금 수에 따른 잠금 에스컬레이션을 비활성화합니다. SQL Server는 행 또는 페이지 잠금을 테이블 잠금으로 에스컬레이션하지 않습니다. |
1222 |
교착 상태 정보를 XML 형식으로 반환합니다(1204의 향상된 버전). |
1224 |
잠금 수에 따른 잠금 에스컬레이션을 비활성화합니다(메모리 부족으로 인한 잠금 에스컬레이션은 여전히 발생할 수 있음). |
1448 |
비동기 보조 복제본이 변경 사항을 승인할 때까지 기다리지 않고 복제 로그 리더가 작업을 진행할 수 있도록 합니다. 로그 리더는 |
2528 |
|
3654 |
메모리 누수 또는 해제되지 않은 메모리 상태 문제를 해결하는 데 사용됩니다. 이 플래그가 활성화된 상태에서 이러한 문제가 감지되면 SQL Server는 어설션 실패를 트리거하고 미니 덤프를 생성합니다. 이때 덤프는 추적 플래그 자체가 아닌 향상된 추적에 의해 포착된 기본 메모리 오류로 인해 생성되는 것입니다. |
4138 |
|
4139 |
선행 열이 오름차순인지, 내림차순인지, 고정인지에 관계없이 더 나은 카디널리티 추정을 위해 쿼리 컴파일 시 히스토그램을 조정합니다. |
4199 |
이전에 여러 추적 플래그를 통해 도입된 쿼리 최적화 프로그램의 다양한 변경 사항을 제어합니다. |
4616 |
서버 수준의 메타데이터를 애플리케이션 역할에서 볼 수 있도록 설정합니다. |
6527 |
공통 언어 런타임(CLR) 통합에서 메모리 부족 예외가 처음 발생할 때 메모리 덤프가 생성되지 않도록 설정합니다. |
7745 |
데이터베이스 종료 시 쿼리 스토어가 디스크로 데이터를 플러시하지 못하게 합니다. |
8285 |
변경 데이터 캡처(CDC) 또는 읽기 커밋된 스냅샷 격리(RCSI)가 활성화된 데이터베이스에서 발생하는 어설션 오류( |
8780 |
최적화 프로그램이 더 나은 계획을 찾을 수 있도록 더 많은 시간을 부여합니다. |
9432 |
|
9481 |
데이터베이스 호환성 수준과 관계없이 쿼리 최적화 프로그램이 레거시 카디널리티 추정 모델(SQL Server 2012 이하)을 사용하도록 강제합니다. 대안: 데이터베이스 수준에서는 |
9492 |
|
9592 |
동기식 가용성 그룹에 대한 로그 스트림 압축을 활성화합니다. 압축은 지연 시간을 늘리기 때문에 동기식 가용성 그룹에서는 로그 스트림 압축이 기본적으로 비활성화되어 있습니다. 이를 활성화하면 추가적인 CPU 사용과 약간의 지연 시간이 발생하는 대신 복제본 간의 네트워크 대역폭 사용량을 줄일 수 있습니다. SQL Server 2016(13.0) 이상에 적용됩니다. |
11024 |
SQL Server 2017에서는 분할된 테이블에 대한 증분 통계의 자동 업데이트가 지연될 수 있습니다. 이는 개별 파티션 중 어느 것도 자체 임계값을 초과하지 않는 경우, 전체 수정 횟수가 루트 임계값을 초과하더라도 루트 노드의 수정 횟수가 0으로 재설정되기 때문에 발생합니다. 추적 플래그 11024는 루트 노드의 수정 횟수를 모든 파티션 수정 사항의 실제 합계로 유지하여 통계가 적시에 업데이트되도록 보장함으로써 이 문제를 해결합니다. SQL Server 2017 CU3 이상에 적용됩니다. |
11042 |
SQL Server 2019 CU14에서는 |
12502 |
온프레미스 SQL Server 인스턴스에 대한 외부 권한 부여 정책을 비활성화하여 긴 |
12618 |
자동 계획 수정(APC) 기능이 동일한 계획에 대해 여러 번의 연속적인 회귀 검사를 수행함으로써, 수정 여부를 결정하기 전에 더 많은 통계 정보를 수집할 수 있도록 합니다. SQL Server 2022 CU4 이상에 적용됩니다. |
12656 |
자동 계획 수정(APC) 기능이 계획 변경을 감지한 후 회귀 검사를 실행하기 전에 5분의 지연 시간을 추가합니다. 이를 통해 빠르게 실행되는 쿼리로 인한 결과 왜곡을 방지하고, 변경의 영향을 받는 장기 실행 쿼리나 시간 초과가 발생하기 쉬운 쿼리까지 반영할 수 있습니다. SQL Server 2022 CU4 이상에 적용됩니다. |
참고
SQL Server 2016 Service Pack 1(SP1) 이상에서는 추적 플래그 4138 및 4139 대신 쿼리 수준에서 USE HINT 쿼리 힌트를 사용하는 것이 좋습니다. 이 변경 사항을 프로덕션에 적용하기 전에 항상 철저히 테스트하세요.
중요
추적 플래그 7745를 사용하면 종료 시점에 플러시되지 않은 쿼리 스토어 데이터가 손실될 수 있습니다. SQL Server를 즉시 종료하려면 이 추적 플래그 대신 SHUTDOWN WITH NOWAIT를 사용합니다.