쿼리 샘플 탐색하기
Samples 페이지는 주어진 시점에 어떤 쿼리가 실행되고 있었는지 이해하는 데 도움을 줘요. 각 실행을 쿼리와 관련 쿼리의 평균 성능과 비교해 볼 수 있어요.
출처: 문서
본문
Samples 페이지는 실행 중이거나 최근에 완료된 쿼리의 시점 스냅샷을 보여줘요. 시점 스냅샷이기 때문에 모든 쿼리를 대표로 보여주지는 않지만, 비율을 나타낼 수는 있어요.
검색 및 필터링 (Search and filter)
Samples 페이지는 모든 지원되는 데이터베이스 제품의 쿼리를 함께 보여줘요 (어떤 데이터베이스를 자세히 볼지 선택하는 Query Metrics 페이지와 달라요). 특정 데이터베이스(Postgres 또는 MySQL)의 데이터를 보려면 source 패싯으로 필터링하세요.
검색 필드에 태그를 입력해 쿼리 샘플 목록을 필터링하거나, 왼쪽에 나열된 패싯을 사용할 수 있어요. 패싯에는 다음이 포함돼요:
- Core: 서비스, 데이터베이스 제품 소스(Postgres 또는 MySQL), 호스트, 지속 시간.
- Network: 데이터베이스에 연결하는 애플리케이션 또는 프록시의 클라이언트 IP 주소와 포트.
- Database: 데이터베이스 이름, 실행 계획 비용 슬라이더, 인덱스, 쿼리가 반환하거나 영향을 준 행 수를 위한 행 수 슬라이더, 쿼리 문장, 사용자.
- Postgres 및 MySQL 전용 패싯
Options를 클릭해 테이블에 컬럼을 추가하세요. 컬럼 헤더를 클릭하면 특정 메트릭으로 정렬할 수 있어요.
실행 계획 비용 (Explain plan cost)
실행 계획 비용은 데이터베이스가 두 계획을 서로 비교하기 위해 사용하는 단위 없는 측정값이에요. 대략 데이터베이스의 항목 수(블록 또는 페이지)에 해당하지만, 주로 단일 계획의 절대적 측면이 아니라 두 계획의 상대적 비교에 유용해요. 실행 계획 비용 계산은 데이터베이스가 어떤 계획을 사용할지 선택하는 데 도움을 줘요.
Query Samples 페이지를 사용하면 여러 쿼리의 실행 계획 비용을 필터링, 정렬, 비교할 수 있어요. 이 맥락에서 실행 계획 비용을 절대적으로 해석해서는 안 돼요. 실행 계획 비용이 8.5인 쿼리가 비용 8.7인 쿼리보다 반드시 성능이 좋은 것은 아니에요. 하지만 두 쿼리가 비슷할 것으로 예상되는데 비용이 크게 다르다면 그 이유를 조사해 보는 것이 유익할 수 있어요. 또한 쿼리를 비용으로 정렬해 네트워크 지연 같은 외부 요인과 별개로 비용이 많이 드는 쿼리가 무엇인지 확인할 수 있어요.
인덱스 (Indexes)
실행 계획이 있는 쿼리를 데이터베이스 인덱스로 필터링할 수 있으므로, 특정 인덱스를 사용하는 쿼리를 확인할 수 있어요. 또는 일주일 같은 긴 시간 범위를 선택해(시간 경과에 따른 쿼리 샘플의 좋은 대표성을 얻기 위해) 가장 적게 사용된 인덱스(인덱스 패싯 목록에서 가장 낮은 숫자)를 찾아, 거의 사용되지 않는 인덱스를 발견할 수 있어요. 그런 다음 그 인덱스를 데이터베이스에 유지하는 비용보다 얻는 성능이 가치 있는지 고려해 볼 수 있어요.
행 수 (Row count)
선택한 시간 범위에서 많은 수의 행을 반환하거나 영향을 주는 쿼리를 찾으려면 필터링하거나 정렬하세요.
지속 시간 (Duration)
선택한 시간 범위에서 실행하는 데 가장 오래 걸리는 쿼리를 찾으려면 필터링하거나 정렬하세요. 전반적인 성능을 최적화하려는 경우, 이런 느린 쿼리의 소유자를 추적해서 개선에 대해 논의할 수 있어요.
샘플 세부정보 (Sample details)
테이블에서 쿼리를 클릭하면 그 Sample Details 페이지가 열려요. 상단의 Source, Host, Client IP 타일을 사용해 이 샘플의 값으로 Sample Queries 페이지를 필터링하거나, 호스트의 대시보드나 클라이언트 IP의 네트워크 트래픽 메트릭 같은 다른 Datadog 정보로 이동할 수 있어요.
예를 들어 Network traffic 페이지를 열고 서비스로 그룹화하면 해당 IP에서 쿼리를 실행하는 서비스가 무엇인지 확인할 수 있어요.
그래프는 지정된 시간 범위 동안 쿼리의 성능 메트릭(실행 횟수, 지속 시간, 쿼리당 행 수)을 보여줘요 — 상위 쿼리인 경우에요. 보고 있는 샘플 스냅샷의 성능을 나타내는 선이 함께 표시돼요. 상위 쿼리가 아니어서 메트릭을 사용할 수 없으면 그래프가 비어 있어요.
Explain Plan 섹션은 현재 샘플의 Duration과 Cost 통계 그리고 시간 범위 전체에서 수집된 모든 스냅샷의 평균과 p90을 보여줘요.
실행 계획은 계획의 각 노드(단계)에 대한 측정값도 보여줘요: startup cost, total cost, plan rows, plan width. 컬럼 헤더에 마우스를 올리면 각 측정값에 대한 설명이 보여요.
다른 시각화 탐색하기 (Explore other visualizations)
기본 목록 뷰 외에도 Visualize as 버튼 중 하나를 클릭하면 쿼리 샘플 데이터를 시계열, 상위 목록, 또는 테이블로 볼 수 있어요. 이렇게 하면 데이터를 바라보는 강력한 방법이 드러날 수 있어요. 예를 들어 데이터 센터에서 실행 중인 가장 느린 쿼리를 보려면 Timeseries를 선택하고 Statement로 그룹화한 다음 평균 지속 시간을 그래프로 그리세요:
또는 보통 빠르게 실행되지만 때때로 느리게 실행되는 쿼리 같은 이상값을 p90 또는 p99 지속 시간을 그래프로 그려 찾을 수 있어요.
테이블 시각화를 사용해 다른 사람과 공유할 보고서 형태의 요약을 만들 수 있어요. 예를 들어 최악의 성능을 보이는 쿼리(p75 Duration) 테이블을 만들고 각 쿼리의 평균 계획 비용 값을 포함하세요:
Export 버튼을 사용해 데이터를 엔지니어링 팀과 공유해 개선 노력을 어디에 집중할지 논의를 시작하세요.
Database Monitoring 대시보드 (Database Monitoring dashboards)
데이터베이스 관련 인프라와 쿼리 메트릭 시각화를 보여주는 대시보드에 빠르게 접근하려면 페이지 상단의 Dashboards 링크를 클릭하세요. 기본 제공 대시보드를 사용하거나, 복제해서 필요에 맞게 사용자 정의할 수 있어요.