쿼리 작업 수집기 유형
쿼리 작업 수집기 유형은 미리 정의된 시스템 데이터 컬렉션 집합 중 하나인 쿼리 통계 컬렉션 집합에 사용되는 사용자 지정 수집기 유형입니다.
이 수집기 유형은 미리 정의된 조건에 부합하는 쿼리에 대한 쿼리 계획 및 쿼리 텍스트와 함께 쿼리 통계와 쿼리 작업 정보를 수집하는 데 사용됩니다. 이 수집기 유형을 사용하여 고유한 컬렉션 집합을 만들 경우 수집되는 정보는 쿼리 통계 컬렉션 집합과 동일합니다. 따라서 미리 정의된 쿼리 통계 컬렉션 집합을 사용하는 것이 좋습니다.
아키텍처 및 처리
쿼리 작업 수집기 유형은 다음과 같은 요소로 구성됩니다.
입력 매개 변수 스키마(내부)
데이터 수집을 위한 SSIS 패키지(QueryActivityCollect.dtsx)
데이터 업로드를 위한 SSIS 패키지(QueryActivityUpload.dtsx)
또한 이 수집기 유형은 사용자 지정 태스크 또는 변환을 사용하여 관리 데이터 웨어하우스에 저장하기 위한 데이터를 분석 및 선택합니다.
쿼리 작업 수집기 유형은 다음과 같은 작업을 수행합니다.
dm_exec_requests, dm_exec_sessions의 샘플과 기타 선택된 관련 동적 관리 뷰를 수집합니다. 이는 하나의 조인된 쿼리로 구현되며, 데이터 컬렉션은 컬렉션 항목에 대해 지정된 빈도로 수행됩니다.
컬렉션 집합 업로드 빈도와 동일한 빈도로 dm_exec_query_stats 동적 관리 뷰의 스냅숏을 수집합니다. 쿼리 통계 컬렉션 집합의 기본 업로드 빈도는 15분입니다.
컬렉션 단계
다음 표에서는 컬렉션 단계 중에 사용되는 쿼리를 보여 줍니다. 이 쿼리는 QueryActivityCollect.dtsx SSIS 패키지에 정의되어 있습니다.
컬렉션 빈도 |
10초 |
쿼리 |
|
업로드 단계
업로드 단계 동안 수집된 데이터는 관리 데이터 웨어하우스에 저장될 데이터를 결정하기 위해 분석됩니다. 이 분석은 저장되어야 하는 쿼리 통계, 쿼리 계획 및 쿼리 텍스트 집합을 결정합니다.
핵심 요소는 데이터 웨어하우스에 저장할 쿼리 및 쿼리 계획을 선택하는 알고리즘입니다. 이 알고리즘은 다음과 같이 작동합니다.
sys.dm_exec_query_stats의 스냅숏을 수집합니다. 이 스냅숏은 컬렉션 집합 업로드 빈도와 동일한 빈도로 수집됩니다. 기본값은 15분입니다.
새 스냅숏과 비교하기 위해 최신 스냅숏(15분 이전)을 검색합니다. 최신 스냅숏은 로컬로 캐시되고 관리 데이터 웨어하우스에서 검색할 필요는 없습니다.
다음 메트릭을 사용하는 각 스냅숏에서 상위 3개의 쿼리를 선택합니다.
경과 시간
작업자 시간
논리적 읽기 수
논리적 쓰기 수
물리적 읽기 수
실행 횟수
이 프로세스에서는 6 x 3개의 sql_handles 및 plan_handles를 제공합니다.
고유한 sql_handles 및 plan_handles를 식별합니다.
이 결과와 데이터 웨어하우스에 저장된 sql_handles 및 plan_handles의 교집합을 구합니다.
새 sql_handles 및 plan_handles의 경우 서버에서 계획과 텍스트를 가져옵니다. 계획 또는 텍스트를 찾을 수 없는 경우(로컬 캐시에서 이미 제거되었을 수 있음) 해당 핸들을 관리 데이터 웨어하우스에 저장합니다.
수집한 각 sql_handle 텍스트의 경우 텍스트를 정규화하고(예: 매개 변수 및 리터럴 제거) 정규화된 텍스트의 고유한 해시 값을 계산합니다. 정규화된 텍스트, 해시 값 및 원본 sql_handle에 대한 매핑을 관리 데이터 웨어하우스에 저장합니다.
다음 표에서는 스냅숏을 가져온 후 데이터를 분석하여 관리 데이터 웨어하우스에 업로드하는데 사용되는 쿼리를 보여 줍니다. 이 쿼리는 QueryActivityUpload.dtsx SSIS 패키지에 정의되어 있습니다.
쿼리 |
|
쿼리 출력 |
snapshots.query_stats, snapshots.notable_query_text, snapshots.notable_query_plan |
변경 내역
업데이트된 내용 |
---|
"컬렉션 단계" 및 "업로드 단계" 섹션이 추가되었습니다. |
업로드 단계 중에 관리 데이터 웨어하우스에 저장되는 데이터를 결정하는 기준이 QueryActivityUpload.dtsx SSIS 패키지에 정의된 쿼리로 대체되었습니다. |