콘텐츠로 건너뛰기
Telemetry
SQL 레시피 모음

데이터베이스 신뢰성 SQL 레시피

느린 쿼리 지문, 연결 풀 압력, 트랜잭션 롤백, 잠금 경합, 복제 지연, 안전한 애플리케이션 및 데이터베이스 인접 이벤트의 마이그레이션 결과를 분석합니다.

공통 이벤트 계약

이러한 쿼리를 재사용 가능하게 유지하는 필드

  • timestamp_utc, 서비스, database_name, 환경 및 릴리스
  • query_fingerprint, transaction_id, pool_name, consumer_name 및 migration_id
  • duration_ms, wait_ms, lag_seconds, 상태, error_type 및 용량 필드

SQL 이전의 정의

쿼리가 대신 내릴 수 없는 결정

  1. 1원시 SQL 및 매개변수를 저장하는 대신 수집 전에 쿼리 작업을 정규화합니다.
  2. 2클라이언트 풀 대기, 데이터베이스 실행, 잠금 대기 및 다운스트림 복제 지연을 분리합니다.
  3. 3데이터베이스 증상을 애플리케이션 서비스, 릴리스 및 사용자에게 표시되는 워크플로에 연결합니다.

권장 순서

먼저 탐지를 구축한 다음 진단을 구축하세요.

분석 패턴

결과를 통해 결정을 설명

클라이언트 경계 계측

애플리케이션이 데이터베이스 결과를 수신하는 안전한 작업 지문, 서비스, 최종 상태 및 단계 기간을 기록합니다.

압력과 충격을 결합

호출자가 대기하거나, 시간 초과되거나, 롤백되거나, 사용자에게 표시되는 워크플로에 실패하면 전체 풀 또는 임시 잠금이 실행 가능해집니다.

출시 컨텍스트 유지

회귀를 도입한 배포 경계로 격리할 수 있도록 릴리스, 마이그레이션, 복제본 및 지역 필드를 유지하세요.

완전한 레시피

쿼리를 복사한 다음 가정 검증

초보자database_query_events

지문으로 느린 데이터베이스 쿼리 찾기

원시 SQL 또는 매개변수를 저장하지 않고 느린 쿼리 속도, 평균 기간 및 최악의 관찰 기간을 기준으로 정규화된 데이터베이스 작업의 순위를 매깁니다.

조사할 만큼 지속적으로 느린 데이터베이스 작업은 무엇입니까?

SQL 및 결과를 참조하세요.
초보자database_pool_samples

데이터베이스 연결 풀 포화도 측정

애플리케이션 서비스별 평균 풀 활용도, 대기 중인 획득 대기, 시간 초과 및 유휴 용량을 측정합니다.

호출자가 데이터베이스 연결을 기다리게 만드는 응용 프로그램 풀은 무엇입니까?

SQL 및 결과를 참조하세요.
중급database_transaction_events

데이터베이스 트랜잭션 롤백 비율 계산

오류 범주, 기간, 영향을 받는 계정을 유지하면서 서비스별로 커밋된 트랜잭션과 롤백된 트랜잭션을 비교합니다.

데이터베이스 트랜잭션의 비정상적인 부분을 롤백하는 서비스는 무엇입니까?

SQL 및 결과를 참조하세요.
중급database_lock_wait_events

데이터베이스 잠금 대기 및 교착 상태 찾기

사고 수, 대기 기간, 해결되지 않은 잠금 및 감지된 교착 상태를 기준으로 차단된 데이터베이스 작업 지문의 순위를 매깁니다.

가장 심각한 잠금 경합을 일으키는 데이터베이스 작업은 무엇입니까?

SQL 및 결과를 참조하세요.
초보자database_replication_samples

데이터베이스 복제 및 CDC 지연 측정

평균 지연, 최악의 지연, 뒤처진 바이트, 오래된 샘플 비율을 기준으로 복제본 및 변경 데이터 캡처 소비자를 비교합니다.

어떤 복제본이나 CDC 소비자가 소스 데이터베이스에 뒤처지고 있습니까?

SQL 및 결과를 참조하세요.
초보자database_migration_events

릴리스별 데이터베이스 마이그레이션 실패 추적

롤아웃을 완료하기 전에 애플리케이션 릴리스별로 데이터베이스 마이그레이션 성공, 실패, 롤백 및 기간을 비교하세요.

어떤 릴리스에 실패했거나 롤백된 데이터베이스 마이그레이션이 포함되어 있습니까?

SQL 및 결과를 참조하세요.
중급database_request_query_events

N+1 데이터베이스 쿼리 패턴 감지

하나의 애플리케이션 요청 내에서 여러 번 반복되는 데이터베이스 지문을 감지합니다.

요청 내에서 어떤 경로와 쿼리 조합이 의심스럽게 반복됩니까?

SQL 및 결과를 참조하세요.
초보자database_query_events

총 시간 영향을 기준으로 데이터베이스 쿼리 순위 지정

호출량과 대기 시간을 결합하여 애플리케이션 시간을 가장 많이 소비하는 데이터베이스 지문을 찾습니다.

가장 많은 누적 요청 시간을 소모하는 데이터베이스 작업은 무엇입니까?

SQL 및 결과를 참조하세요.
중급database_transaction_events

장기 실행 데이터베이스 트랜잭션 측정

롱테일, 롤백 및 과도한 오픈 기간이 있는 애플리케이션 트랜잭션 클래스를 찾습니다.

가장 오랫동안 열려 있는 애플리케이션 트랜잭션 클래스는 무엇입니까?

SQL 및 결과를 참조하세요.
초보자database_error_events

SQLSTATE 및 릴리스별 데이터베이스 오류 분석

이식 가능한 SQLSTATE 클래스, 애플리케이션 작업 및 릴리스별로 데이터베이스 오류를 그룹화합니다.

애플리케이션 출시 이후 어떤 데이터베이스 오류 클래스가 증가했습니까?

SQL 및 결과를 참조하세요.
중급database_connection_events

데이터베이스 연결 시간 초과 및 이탈 측정

연결 열기, 닫기, 획득 시간 초과, 영향을 받는 요청을 서비스 및 지역별로 비교합니다.

비정상 데이터베이스 연결 변동이 나타나는 서비스와 지역은 무엇인가요?

SQL 및 결과를 참조하세요.
고급database_replica_read_events

지역별 데이터베이스 복제본 부실 상태 측정

애플리케이션 관찰 복제본 재생 지연, 오래된 읽기 및 지역별 장애 조치 결과를 비교합니다.

오래되었거나 실패한 읽기를 제공하는 복제본 지역은 무엇입니까?

SQL 및 결과를 참조하세요.

임계값 이전에 이벤트 계약을 조정하세요.

분석 패턴을 유지하되 자신의 이벤트에 대해 테이블 이름, 필드 유형, 비즈니스 정의, 기간 및 최소 볼륨 규칙을 검증하세요. 게시된 모든 쿼리는 고정된 엔진을 사용하여 빈 형식의 테이블에 대해 계획되고 실행됩니다.