Query Store, Azure Monitor, SQL Insights

Query Store, Azure Monitor, SQL Insights, DMV, Extended Events를 비교합니다.

DP-300 시험에서 모니터링 파트는 '어떤 도구로 어떤 문제를 진단하는가'를 묻습니다. Azure SQL 환경에는 비슷해 보이는 진단 도구가 여럿 있고, 시험에서는 그 경계를 헷갈리도록 선택지를 구성합니다. 자동차 계기판이 연료와 RPM을 보여주고, 블랙박스가 사고 직전의 기록을 보존하며, AI 정비사가 이상 징후를 미리 알려주듯 — 각 도구는 서로 다른 시간 축과 레이어를 담당합니다.

 

Azure Monitor — 리소스 전체를 내려다보는 관제탑

공항 관제탑은 활주로 한 곳이 아니라 공항 전체를 감시합니다. Azure Monitor도 마찬가지입니다. Azure SQL Database, Managed Instance, SQL Server on Azure VM 세 가지 제품 모두에서 메트릭과 로그를 수집하는 통합 관측 플랫폼입니다.

메트릭은 별도 설정 없이 바로 수집됩니다. CPU 백분율, DTU 사용량, Workers/Sessions 수, 스토리지 사용량이 여기에 해당합니다. 기본 보존 기간은 93일이고, 장기 분석이 필요하면 Log Analytics Workspace로 전송합니다.

진단 로그는 다릅니다. 기본적으로 비활성화되어 있어서 를 먼저 구성해야 수집이 시작됩니다. 목적지는 Log Analytics Workspace, Azure Storage, Event Hubs 세 곳 중 선택합니다. 경고 규칙(Alert Rule)을 설정하면 CPU가 80%를 넘는 순간 이메일이나 웹훅으로 자동 알림을 받을 수 있습니다.

 

Query Store — 쿼리 성능의 블랙박스

비행기 블랙박스는 추락 후에도 사고 직전 수십 시간의 비행 기록을 보존합니다. Query Store가 그 역할입니다. 쿼리 실행 계획과 런타임 통계를 내부 테이블에 지속적으로 기록해두기 때문에, 어제 밤 11시에 갑자기 느려진 쿼리의 실행 계획을 오늘 아침에도 조회할 수 있습니다.

Azure SQL Database와 Managed Instance에서는 Query Store가 기본으로 활성화되어 있습니다. 가장 중요한 시나리오는 '플랜 회귀(plan regression)' 탐지입니다. 통계 업데이트나 인덱스 변경 후 실행 계획이 바뀌어 쿼리가 갑자기 느려졌을 때, Query Store에서 이전 성능과 비교하고 으로 좋았던 실행 계획을 고정할 수 있습니다.

대기 통계(wait stats)도 Query Store에 저장됩니다. 쿼리가 느린 이유가 CPU 부족인지, 잠금 대기인지, I/O 병목인지를 쿼리 단위로 분석할 수 있습니다. 보존 기간과 캡처 정책은 또는 Azure Portal에서 조정합니다.

 

DMV — 엔진 내부를 들여다보는 실시간 계기판

응급실 의사가 환자 곁에서 실시간으로 산소 포화도와 심박수를 확인하듯, DMV(Dynamic Management View)는 SQL Server 엔진 내부를 지금 이 순간 들여다보는 창입니다.

는 캐시에 남아 있는 쿼리 실행 통계를 조회합니다. 는 현재 실행 중인 쿼리 목록을 보여줍니다. 는 세션별 대기 유형을 집계합니다. Query Store와 달리 DMV 데이터는 서비스 재시작 또는 계획 캐시 초기화 시 사라집니다. 이력이 필요하면 Query Store, 지금 당장의 상태가 필요하면 DMV입니다.

 

Extended Events — 경량 이벤트 추적

공장에서 결함 제품이 언제, 어느 라인에서 나왔는지 추적하려면 센서를 달아야 합니다. Extended Events(XE)는 SQL Server 내부에서 특정 이벤트가 발생할 때만 데이터를 캡처하는 경량 추적 도구입니다.

구 SQL Trace와 SQL Server Profiler를 대체하는 현대적 방식입니다. 세션을 정의해 원하는 이벤트만 골라서 캡처하므로 서버 부하가 낮습니다. 캡처된 데이터는 (메모리, 재시작 시 소멸) 또는 (Azure Blob Storage, 영구 보존) 타겟으로 저장합니다. Azure SQL Database에서는 Azure Portal 또는 T-SQL로 XE 세션을 생성할 수 있습니다.

 

SQL Insights와 Intelligent Insights — 통합 대시보드와 AI 진단

호텔 컨시어지는 손님이 묻기 전에 불편함을 파악하고 먼저 해결책을 제시합니다. SQL Insights와 Intelligent Insights가 그 역할을 나눠서 합니다.

는 Azure Monitor 기반의 통합 모니터링 대시보드입니다. Azure SQL Database, Managed Instance, SQL Server on Azure VM 세 제품을 하나의 화면에서 비교하고 싶을 때 사용합니다. 에이전트 없이 DMV 데이터를 수집해 Log Analytics Workspace에 저장하고, 미리 만들어진 통합 워크북으로 시각화합니다.

는 AI 기반 이상 탐지 기능입니다. Azure SQL Database와 Managed Instance에서 성능 패턴을 학습해 갑작스러운 성능 저하를 자동으로 감지하고 근본 원인을 진단 로그에 기록합니다. 사람이 쿼리를 직접 작성하지 않아도 됩니다.

 

도구 선택 기준 한눈에 보기

비슷해 보여도 쓰임새가 다릅니다.

| 도구 | 레이어 | 이력 보존 | 대표 시나리오 | |-|-|-|-| | Azure Monitor | 인프라 (CPU, DTU, 스토리지) | 93일 (메트릭) | 리소스 임계값 알림, 다제품 통합 | | Query Store | 쿼리 실행 계획 + 런타임 통계 | 영구 (설정 가능) | 플랜 회귀 탐지, Force Plan | | DMV | 엔진 실시간 상태 | 재시작 시 초기화 | 현재 실행 중인 쿼리, 현재 잠금 | | Extended Events | 특정 이벤트 캡처 | ring_buffer(휘발) / event_file(영구) | 경량 추적, Deadlock 캡처 | | SQL Insights | DMV 기반 통합 대시보드 | Log Analytics 보존 기간 | 다중 인스턴스 비교 | | Intelligent Insights | AI 이상 탐지 | 진단 로그 | 성능 저하 자동 감지 |

 

시험 함정 — Diagnostic Settings를 빠뜨리면 아무것도 안 보인다

새 Azure SQL Database를 만들고 나서 Log Analytics에서 쿼리 통계 로그가 안 보인다는 민원이 들어왔습니다. 메트릭은 잘 나오는데 로그가 없습니다. 원인은 단순합니다 — Diagnostic Settings를 구성하지 않았기 때문입니다.

Azure Portal에서 해당 리소스 → '진단 설정' → '+ 진단 설정 추가' 순서로 들어가 , , 같은 로그 카테고리를 선택하고 Log Analytics Workspace를 목적지로 지정해야 합니다. 설정 후 데이터가 쌓이기까지 수 분이 걸립니다. 이 단계를 빠뜨리면 Query Store 외의 엔진 로그는 Azure 외부로 절대 나오지 않습니다.

또 하나의 함정은 Intelligent Insights와 Query Store 혼동입니다. 둘 다 성능 저하를 탐지하지만, Intelligent Insights는 AI가 자동으로 찾아주는 것이고 Query Store는 DBA가 직접 분석하는 도구입니다. 시험에서 '자동 감지'라는 표현이 나오면 Intelligent Insights를 떠올리세요.

 

시험 핵심 정리

"어젯밤에 느렸던 쿼리의 실행 계획을 확인하고 싶다" -- Query Store "플랜 회귀 후 이전 실행 계획으로 되돌리고 싶다" -- Query Store Force Plan "지금 이 순간 실행 중인 쿼리 목록이 필요하다" -- DMV (sys.dm_exec_requests) "CPU가 80%를 넘으면 이메일 알림을 받고 싶다" -- Azure Monitor 경고 규칙 "진단 로그를 Log Analytics로 보내고 싶다" -- Diagnostic Settings 구성 필수 "여러 Azure SQL 제품을 하나의 대시보드에서 보고 싶다" -- SQL Insights "성능 저하를 AI가 자동으로 탐지해주길 원한다" -- Intelligent Insights "특정 Deadlock 이벤트만 경량으로 캡처하고 싶다" -- Extended Events "서비스 재시작 후에도 쿼리 통계가 남아 있어야 한다" -- Query Store (DMV 아님) "ring_buffer vs event_file" -- ring_buffer는 메모리(휘발), event_file은 Blob(영구)

Query Store = 쿼리 블랙박스, DMV = 실시간 계기판, Azure Monitor = 인프라 관제탑, Intelligent Insights = AI 자동 진단

블로그 목록으로 돌아가기