콘텐츠로 건너뛰기
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 및 결과를 참조하세요.

임계값을 설정하기 전에 이벤트 필드 확인하기

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