보조 복제본에 대한 쿼리 저장소
SQL Server 2022(16.x)
보조 복제본에 대한 쿼리 저장소 기능을 사용하면 주 복제본에 사용할 수 있는 보조 복제본 워크로드에서 동일한 쿼리 저장소 기능을 사용할 수 있습니다. 보조 복제본에 대한 쿼리 저장소를 사용하도록 설정하면 복제본은 일반적으로 쿼리 저장소에 저장되는 쿼리 실행 정보를 주 복제본으로 다시 보냅니다. 그런 다음, 주 복제본은 자체 쿼리 저장소 내에서 디스크에 데이터를 유지합니다. 기본적으로 주 복제본과 모든 보조 복제본 간에 하나의 쿼리 저장소가 공유됩니다. 쿼리 저장소는 주 복제본에 존재하며 모든 복제본에 대한 데이터를 함께 저장합니다. 현재 보조 복제본에 대한 쿼리 저장소는 가용성 그룹에 구성된 SQL Server 2022(16.x) 인스턴스에서 사용할 수 있습니다.
Important
보조 복제본에 대한 쿼리 저장소는 미리 보기 기능입니다. 프로덕션 배포를 위한 것이 아닙니다. 참조: SQL Server 2022(16.0) 릴리스 정보
보조 복제본에 대해 쿼리 저장소를 사용하도록 설정하려면 먼저 추적 플래그 12606을 사용하도록 설정해야 합니다. 추적 플래그를 사용하도록 설정하려면 다음을 수행합니다.
- Windows에서 SQL Server 구성 관리자를 시작 합니다.
- SQL Server 서비스 목록에서 SQL Server 2022(16.x) 인스턴스에 대한 SQL Server 인스턴스 서비스를 마우스 오른쪽 단추로 클릭합니다. 속성을 선택합니다.
- 시작 매개 변수 탭을 선택합니다. 시작 매개 변수 지정: 필드에서 값을
-T12606
추가하고 추가를 선택합니다. - 변경 내용이 적용되기 전에 SQL Server 인스턴스 서비스를 다시 시작해야 합니다.
보조 복제본에 쿼리 저장소 사용
SQL Server 인스턴스의 보조 복제본에 대해 쿼리 저장소를 사용하기 전에 Always On 가용성 그룹이 있어야 합니다. 그런 다음 ALTER DATABASE SET 옵션(Transact-SQL)을 사용하여 보조 복제본에 대해 쿼리 저장소를 사용하도록 설정합니다.
쿼리 저장소가 아직 사용하도록 설정되어 있지 않고 주 복제본에서 READ_WRITE 모드인 경우 계속하기 전에 사용하도록 설정해야 합니다. 주 복제본에서 원하는 각 데이터베이스에 대해 다음을 실행합니다.
ALTER DATABASE [Database_Name] SET QUERY_STORE = ON;
GO
ALTER DATABASE [Database_Name] SET QUERY_STORE
( OPERATION_MODE = READ_WRITE );
모든 보조 복제본에서 쿼리 저장소를 사용하도록 설정하려면 주 복제본에 연결하고 원하는 각 데이터베이스에 대해 다음을 실행합니다. 현재 보조 복제본에 대한 쿼리 저장소를 사용하도록 설정하면 모든 보조 복제본에 대해 사용하도록 설정됩니다.
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE );
GO
모든 보조 복제본에서 쿼리 저장소를 사용하지 않도록 설정하려면 주 복제본에 연결하고 원하는 각 데이터베이스에 대해 다음을 실행합니다.
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = OFF;
GO
보조 복제본의 데이터베이스에 연결하고 다음을 실행하여 보조 복제본에서 쿼리 저장소가 사용하도록 설정되어 있는지 확인할 수 있습니다.
SELECT desired_state, desired_state_desc, actual_state, actual_state_desc, readonly_reason
FROM sys.database_query_store_options;
GO
쿼리 sys.database_query_store_options 다음 샘플 결과는 쿼리 저장소가 보조 데이터베이스에 대한 READ_CAPTURE_SECONDARY 상태임을 나타냅니다. 의 8
쿼리 readonly_reason
가 보조 복제본에 대해 실행되었음을 나타냅니다. 이러한 결과는 쿼리 저장소가 보조 복제본에서 성공적으로 사용하도록 설정되었음을 나타냅니다.
desired_state | desired_state_desc | actual_state | actual_state_desc | readonly_reason |
---|---|---|---|---|
4 | READ_CAPTURE_SECONDARY | 4 | READ_CAPTURE_SECONDARY | 8 |
사용하도록 설정되면 sys.query_store_replicas 사용하여 보조 복제본에서 쿼리 저장소의 상태를 확인할 수 있습니다.
보조 복제본에 대한 쿼리 저장소를 사용하지 않도록 설정하려면 주 복제본의 데이터베이스에 연결하고 다음 코드를 실행합니다.
ALTER DATABASE CURRENT
FOR SECONDARY SET QUERY_STORE = OFF;
GO
복제본 세트
현재 보조 복제본에 대한 쿼리 저장소를 사용하도록 설정하면 모든 보조 복제본에 대해 사용하도록 설정됩니다.
복제본 집합은 역할(주, 보조, 지역 보조, 지역 주)을 공유하거나 명명된 개별 복제본인 모든 명명되지 않은 복제본으로 정의됩니다. 쿼리에 대해 저장된 데이터는 복제본 집합에 따라 워크로드로 분석할 수 있습니다. 복제본에 대한 쿼리 저장소는 보조 복제본에 대해 실행될 수 있는 고유한 읽기 전용 워크로드의 성능을 모니터링하고 조정하는 기능을 제공합니다.
보조 복제본의 쿼리 저장소 대한 성능 고려 사항
보조 복제본에서 쿼리 정보를 주 복제본으로 다시 보내는 데 사용하는 채널은 보조 복제본을 최신 상태로 유지하는 데 사용되는 채널과 동일합니다. 데이터는 쿼리 저장소 주 복제본에서 실행되는 쿼리에 사용하는 주 복제본의 동일한 테이블에 저장되므로 쿼리 저장소 크기가 커집니다.
따라서 시스템이 상당한 부하를 받고 있는 경우 채널이 오버로드되어 속도가 약간 느려질 수 있습니다. 또한 현재 쿼리 저장소 대해 존재하는 동일한 임시 쿼리 캡처 문제는 보조 복제본에서 실행되는 워크로드에 대해 계속됩니다. 쿼리 저장소에서 가장 관련성이 높은 데이터를 유지하는 방법에 대해 자세히 알아보세요.
참고 항목
- ALTER DATABASE SET 옵션(Transact-SQL)
- sys.database_query_store_options(Transact-SQL)
- sys.query_store_replicas
- sys.query_store_plan_forcing_locations(Transact-SQL)
- sys.sp_query_store_force_plan(Transact-SQL)