다음을 통해 공유


데이터베이스 Watcher 데이터 수집 및 데이터 세트(프리뷰)

적용 대상: Azure SQL 데이터베이스 Azure SQL Managed Instance

데이터베이스 Watcher는 SQL 시스템 보기에서 모니터링 데이터를 수집하고 이를 데이터 세트 형식으로 데이터 저장소에 수집합니다. 각 데이터 세트는 하나 이상 SQL 시스템 보기의 데이터를 사용하여 구성됩니다. 데이터 저장소에는 각 데이터 세트에 대한 별도의 테이블이 있습니다.

데이터 수집

데이터베이스 Watcher는 T-SQL 쿼리를 사용하여 주기적인 간격으로 모니터링 데이터를 수집합니다. 쿼리를 실행할 때마다 수집된 데이터를 샘플이라고 합니다. 샘플 수집 빈도는 데이터 세트에 따라 다릅니다. 예를 들어, SQL 성능 카운터와 같이 자주 변경되는 데이터는 10초마다 수집될 수 있지만 데이터베이스 구성과 같은 정적 데이터는 5분마다 수집되는 경우가 많습니다. 자세한 내용은 데이터 세트를 참조하세요.

데이터베이스 Watcher는 Azure Data Explorer스트리밍 수집Microsoft Fabric의 실시간 분석을 활용하여 실시간에 가까운 모니터링을 제공합니다. 일반적으로 수집된 SQL 모니터링 데이터는 10초 이내에 보고 및 분석에 사용할 수 있습니다. 수집 통계 링크를 사용하여 데이터베이스 Watcher 대시보드에서 데이터 수집 지연 시간을 모니터링할 수 있습니다.

데이터베이스 Watcher와 애플리케이션 워크로드 간의 상호 작용

데이터베이스 감시자를 사용하도록 설정하면 애플리케이션 워크로드 성능에 관찰 가능한 영향을 미치지 않을 수 있습니다. 모니터링 쿼리는 일반적으로 1초 미만 범위에서 실행되는 반면, 대규모 데이터 세트 반환과 같이 더 많은 시간이 필요할 수 있는 쿼리는 드문 간격으로 실행됩니다.

애플리케이션 워크로드에 미치는 영향을 더욱 줄이기 위해 Azure SQL 데이터베이스의 모든 데이터베이스 Watcher 쿼리의 리소스는 내부 워크로드로 관리됩니다. 리소스 경합이 있는 경우, 쿼리 모니터링에 의한 리소스 소비는 데이터베이스에서 사용할 수 있는 총 리소스의 일부로 제한됩니다. 이렇게 하면 애플리케이션 워크로드가 모니터링 쿼리보다 우선순위가 높아집니다.

Azure SQL 리소스에서 실행되는 데이터 수집과 데이터베이스 워크로드 간의 차단 및 교착 상태와 같은 동시성 충돌을 방지하기 위해 모니터링 쿼리는 짧은 잠금 시간 제한과 낮은 교착 상태 우선 순위를 사용합니다. 동시성 충돌이 있는 경우 애플리케이션 워크로드 쿼리에 우선 순위가 지정됩니다.

전체 리소스 사용률이 높거나 동시성 충돌이 발생하는 경우 수집된 데이터의 간격을 관찰할 수 있습니다. 이러한 경우 모니터링 쿼리는 애플리케이션 워크로드를 위해 우선 순위를 해제할 수 있습니다.

Elastic Pool에서의 데이터 수집

Elastic Pool을 모니터링하려면 풀에서 1개의 데이터베이스를 앵커 데이터베이스로 지정해야 합니다. 데이터베이스 Watcher는 앵커 데이터베이스에 연결합니다. Watcher는 VIEW SERVER PERFORMANCE STATE 권한을 보유하기 때문에 앵커 데이터베이스의 시스템 보기는 풀 전체에 대한 모니터링 데이터를 제공합니다.

모니터링할 각 Elastic Pool에 빈 데이터베이스를 추가하고 앵커 데이터베이스로 지정할 수 있습니다. 이렇게 하면 Elastic Pool 모니터링을 중단하지 않고도 다른 데이터베이스를 내외부로 또는 풀 간에 이동할 수 있습니다.

앵커 데이터베이스에서 수집된 데이터에는 풀 수준 메트릭 및 풀의 모든 데이터베이스에 대한 특정 데이터베이스 수준 성능 메트릭(예: 각 데이터베이스에 대한 리소스 사용률 및 요청 속도 메트릭)이 포함됩니다. 일부 시나리오에서는 탄력적 풀 SQL 대상을 추가하여 전체적으로 탄력적 풀을 모니터링할 수 있으므로 풀의 각 개별 데이터베이스를 모니터링할 필요가 없습니다.

풀 수준의 CPU, 메모리, 스토리지 사용률, 대기 통계와 같은 특정 모니터링 데이터는 풀의 개별 데이터베이스별로 특성을 파악할 수 없기 때문에 Elastic Pool 수준에서만 수집됩니다. 반대로 쿼리 런타임 통계, 데이터베이스 속성, 테이블 및 인덱스 메타데이터와 같은 특정 다른 데이터는 개별 데이터베이스를 SQL 대상으로 추가하는 경우에만 사용할 수 있습니다.

탄력적 풀의 개별 데이터베이스를 SQL 대상으로 추가하는 경우 탄력적 풀도 SQL 대상으로 추가해야 합니다. 이렇게 하면 데이터베이스 및 풀의 성능을 더 완벽하게 확인할 수 있습니다.

고밀도 Elastic Pool 모니터링

고밀도 Elastic Pool에는 많은 수의 데이터베이스가 포함되지만 컴퓨팅 크기는 상대적으로 작습니다. 이 구성을 사용하면 고객은 풀에서 적은 수의 데이터베이스만 동시에 활성화된다는 가정 하에 컴퓨팅 리소스 할당을 최소한으로 유지하여 상당한 비용을 절감할 수 있습니다.

애플리케이션 쿼리에 영향을 미치지 않도록 고밀도 Elastic Pool에서 데이터베이스 Watcher 쿼리에 사용할 수 있는 컴퓨팅 리소스는 더욱 제한됩니다. 이로 인해 데이터베이스 Watcher는 고밀도 Elastic Pool의 일부 데이터베이스에서 모니터링 데이터를 수집하지 못할 수 있습니다.

조밀한 탄력적 풀을 모니터링하려면 탄력적 풀을 SQL 대상으로 추가하여 풀 수준에서 모니터링을 사용하도록 설정합니다.

고밀도 Elastic Pool에서는 여러 개별 데이터베이스를 모니터링하지 않는 것이 좋습니다. 데이터베이스 Watcher 쿼리에 사용할 수 있는 컴퓨팅 리소스가 부족하여 수집된 데이터에 간격이 발생하거나 데이터 샘플 간에 예상보다 큰 간격이 발생할 수 있습니다.

데이터 보존

고객은 수집된 SQL 모니터링 데이터를 저장할 수 있는 세 가지 데이터 저장소 유형 중 하나를 선택할 수 있습니다.

  • Azure Data Explorer 클러스터의 데이터베이스. 기본적으로 새 감시자마다 새 Azure Data Explorer 클러스터가 만들어지고 감시자와 동일한 Azure 지역에 위치합니다.

    고객은 Azure Data Explorer 클러스터 및 데이터베이스의 위치를Azure 지역의 특정 Azure 지역으로 선택할 수 있습니다. Azure Data Explorer의 데이터 복제 기능에 대한 자세한 내용은 비즈니스 연속성 및 재해 복구 개요를 참조하세요.

  • 무료 Azure Data Explorer 클러스터의 데이터베이스.

    고객은 특정 Azure 지역을 선택할 수 있지만, 무료 Azure Data Explorer 클러스터 및 데이터베이스의 위치로 특정 Azure 지역을 선택할 수는 없습니다. 다른 하위 지역 또는 지역에 대한 데이터 복제는 지원되지 않습니다.

  • Microsoft Fabric 실시간 분석의 데이터베이스.

    고객은 데이터베이스의 지리적 위치를 선택할 수 없습니다.

수집된 SQL 모니터링 데이터에 대한 데이터 보존을 완전히 제어하려면 고객은 Azure Data Explorer 클러스터의 데이터베이스를 데이터 저장소로 선택해야 합니다.

고객은 Azure Data Explorer 클러스터의 지리 및 지역을 모니터링 중인 Azure SQL 리소스의 지리 및 지역에 맞출 수 있습니다. Azure SQL 리소스가 여러 지역에 있는 경우, 고객은 데이터 보존 요구 사항을 충족하기 위해 여러 감시자 및 여러 Azure Data Explorer 클러스터를 만들어야 할 수 있습니다.

데이터 세트

이 섹션에서는 데이터 저장소의 컬렉션 빈도 및 테이블 이름을 포함하여 각 SQL 대상 형식에 사용할 수 있는 데이터 세트에 대해 설명합니다.

참고 항목

프리뷰 중에 데이터 세트를 추가하고 제거할 수 있습니다. 이름, 설명, 컬렉션 빈도 및 사용 가능한 열 등의 데이터 세트 속성은 변경할 수 있습니다.

데이터 세트 이름 테이블 이름 수집 빈도(hh:mm:ss) 설명
활성 세션 sqldb_database_active_sessions 00:00:30 각 행은 요청을 실행 중이거나 차단 중이거나 트랜잭션이 열려 있는 세션을 나타냅니다.
백업 기록 sqldb_database_sql_backup_history 00:05:00 각 행은 성공적으로 완료된 데이터베이스 백업을 나타냅니다.
처리 변경 sqldb_database_change_processing 00:01:00 각 행은 변경 데이터 캡처 또는 변경 피드(Azure Synapse Link)와 같은 변경 처리 기능에 대한 집계 로그 검사 통계의 스냅샷을 나타냅니다.
변경 처리 오류 sqldb_database_change_processing_errors 00:01:00 각 행은 변경 데이터 캡처 또는 변경 피드(Azure Synapse Link)와 같은 변경 처리 기능을 사용할 때 변경 처리 중에 발생한 오류를 나타냅니다.
연결 sqldb_database_connectivity 00:00:30 각 행은 데이터베이스에 대한 연결 프로브(로그인 및 쿼리)를 나타냅니다.
지역 복제본 sqldb_database_geo_replicas 00:00:30 각 행은 지역 복제본 메타데이터 및 통계 등 주 또는 보조 지역 복제본을 나타냅니다.
인덱스 메타데이터 sqldb_database_index_metadata 00:30:00 각 행은 인덱스 정의, 속성 및 운영 통계 등 인덱스 파티션을 나타냅니다.
메모리 사용률 sqldb_database_memory_utilization 00:00:10 각 행은 데이터베이스 엔진 인스턴스에서 클럭에 의한 메모리 사용량 등 메모리 클럭을 나타냅니다.
누락된 인덱스 sqldb_database_missing_indexes 00:15:00 각 행은 생성되는 경우 쿼리 성능을 개선할 수 있는 인덱스를 나타냅니다.
메모리 부족 이벤트 sqldb_database_oom_events 00:01:00 각 행은 데이터베이스 엔진의 메모리 부족 이벤트를 나타냅니다.
성능 카운터(일반) sqldb_database_performance_counters_common 00:00:10 각 행은 데이터베이스 엔진 인스턴스의 성능 카운터를 나타냅니다. 이 데이터 세트에는 일반적으로 사용된 카운터가 포함됩니다.
성능 카운터(상세) sqldb_database_performance_counters_detailed 00:01:00 각 행은 데이터베이스 엔진 인스턴스의 성능 카운터를 나타냅니다. 이 데이터 세트에는 자세한 모니터링 및 문제 해결에 필요할 수 있는 카운터가 포함되어 있습니다.
속성 sqldb_database_properties 00:05:00 각 행은 데이터베이스 옵션, 리소스 거버넌스 제한 및 기타 데이터베이스 메타데이터 등 데이터베이스를 나타냅니다.
쿼리 런타임 통계 sqldb_database_query_runtime_stats 00:15:00 각 행은 쿼리 실행 통계 등 쿼리 저장소 런타임 간격을 나타냅니다.
쿼리 대기 통계 sqldb_database_query_wait_stats 00:15:00 각 행은 대기 범주 통계 등 쿼리 저장소 런타임 간격을 나타냅니다.
복제본 sqldb_database_replicas 00:00:10 각 행은 복제 메타데이터 및 통계 등 데이터베이스 복제본을 나타냅니다. 주 복제본에 수집된 경우 주 복제본과 지역 복제본을 포함하며, 보조 복제본에 수집된 경우 보조 복제본을 포함합니다.
리소스 사용률 sqldb_database_resource_utilization 00:00:15 각 행은 시간 간격으로 데이터베이스에 대한 CPU, 데이터 IO, 로그 IO 및 기타 리소스 사용량 통계를 나타냅니다.
선택 영역 통계 sqldb_database_session_stats 00:01:00 각 행은 로그인 이름, 호스트 이름, 애플리케이션 이름 등과 같은 비합산 세션 특성으로 집계된 데이터베이스에 대한 세션 통계 요약을 나타냅니다.
SOS 스케줄러 sqldb_database_sos_schedulers 00:01:00 각 행은 SOS 스케줄러를 나타내며 스케줄러, CPU 노드 및 메모리 노드에 대한 통계가 포함됩니다.
스토리지 IO sqldb_database_storage_io 00:00:10 각 행은 데이터베이스 파일을 나타내며 파일에 대한 누적 IOPS, 처리량 및 대기 시간 통계가 포함됩니다.
스토리지 사용률 sqldb_database_storage_utilization 00:01:00 각 행은 데이터베이스를 나타내며 스토리지 사용량(예: tempdb, 쿼리 저장소 및 영구 버전 저장소)이 포함됩니다.
테이블 메타데이터 sqldb_database_table_metadata 00:30:00 각 행은 테이블 또는 인덱싱된 뷰를 나타내며 행 수, 공간 사용량, 데이터 압축, 열 및 제약 조건과 같은 메타데이터가 포함됩니다.
대기 통계 sqldb_database_wait_stats 00:00:10 각 행은 대기 유형을 나타내며 데이터베이스 엔진 인스턴스의 누적 대기 통계가 포함됩니다. Elastic Pool의 데이터베이스의 경우 데이터베이스 범위 대기 통계만 수집됩니다.

참고 항목

Elastic Pool의 데이터베이스의 경우 풀 수준 데이터가 포함된 SQL Database 데이터 세트는 수집되지 않습니다. 여기에는 메모리 사용률, 메모리 부족 이벤트, 성능 카운터(공통)성능 카운터(상세) 데이터 세트가 포함됩니다. 대기 통계 데이터 세트는 수집되지만 데이터베이스 범위 대기만 포함됩니다. 이를 통해 풀의 모든 데이터베이스에서 동일한 데이터를 수집하는 것이 방지됩니다.

풀 수준 데이터는 SQL Elastic Pool 데이터 세트에 수집됩니다. 지정된 Elastic Pool의 경우 성능 카운터(공통)성능 카운터(상세) 데이터 세트에는 풀 수준 메트릭과 특정 데이터베이스 수준 메트릭(예: CPU, 데이터 IO, 로그 쓰기, 요청, 트랜잭션)이 포함됩니다.

공통 열

각 SQL 대상 형식에 대해 데이터 세트에는 다음 표에 설명된 대로 공통 열이 있습니다.

열 이름 설명
subscription_id SQL 데이터베이스의 Azure 구독 ID입니다.
resource_group_name SQL 데이터베이스의 리소스 그룹 이름입니다.
resource_id SQL 데이터베이스의 Azure 리소스 ID입니다.
sample_time_utc 행의 값이 관찰된 시간(UTC)입니다.
collection_time_utc Watcher가 행을 수집한 시간(UTC)입니다. 이 열은 수집 시간이 샘플 시간과 다를 수 있는 데이터 세트에 표시됩니다.
replica_type 다음 중 하나: , HA 보조, 지역 복제본 전달자, 명명된 보조.
logical_server_name 모니터링되는 데이터베이스 또는 Elastic Pool을 포함하는 Azure SQL 데이터베이스의 논리 서버 이름입니다.
database_name 모니터링되는 데이터베이스의 이름입니다.
database_id 모니터링되는 데이터베이스의 데이터베이스 ID로, 논리 서버 내에서 고유합니다.
logical_database_id 사용자 데이터베이스의 수명 동안 변경되지 기본 고유한 데이터베이스 식별자입니다. 데이터베이스 이름을 바꾸거나 서비스 목표를 변경해도 이 값은 변경되지 않습니다.
physical_database_id 사용자 데이터베이스에 해당하는 현재 물리적 데이터베이스에 대한 고유한 데이터베이스 식별자입니다. 데이터베이스 서비스 목표를 변경하면 이 값이 변경됩니다.
replica_id 하이퍼스케일 컴퓨팅 복제본에 대한 고유 식별자입니다.

데이터베이스 Watcher가 행을 수집하기 전에 관찰한 샘플이 포함된 경우 데이터 집합에는 sample_time_utccollection_time_utc 열이 모두 있습니다. 그렇지 않으면 관찰 시간과 수집 시간이 동일하고 데이터 세트에 sample_time_utc 열만 포함됩니다.

예를 들어 sqldb_database_resource_utilization 데이터 세트는 sys.dm_db_resource_stats 동적 관리 뷰(DMV)에서 파생됩니다. DMV에는 15초 간격으로 집계 리소스 통계를 보고하는 각 행의 관찰 시간인 end_time 열이 포함되어 있습니다. 이 시간은 sample_time_utc 열에 보고됩니다. 데이터베이스 Watcher가 이 DMV를 쿼리할 때 결과 집합에는 각각 end_time가 다른 여러 행이 포함될 수 있습니다. 이 모든 행은 collection_time_utc 값이 동일합니다.