활성 쿼리 모니터링

이 페이지에서는 데이터베이스에서 활성 상태로 있는 쿼리를 모니터링하고 문제 해결하는 방법을 설명합니다. 활성 쿼리는 데이터베이스에서 장시간 실행되며 성능에 영향을 줄 수 있는 쿼리입니다. 이러한 쿼리를 모니터링하면 시스템 지연 시간 및 높은 CPU 사용량에 대한 원인을 파악하는 데 도움이 될 수 있습니다.

쿼리 통계 대시보드에서 활성 쿼리를 확인할 수 있습니다. 이러한 쿼리는 트랜잭션 시작 시간으로 표시됩니다. 실행 중인 쿼리가 많으면 시스템에서 데이터 수집에 적용하는 메모리 제약조건으로 인해 결과는 총 쿼리의 일부로 제한될 수 있습니다.

시작하기 전에

활성 쿼리 보기를 시작하려면 다음과 같이 고급 쿼리 통계 기능을 사용 설정하고 인스턴스에 활성 쿼리 분석을 사용 설정해야 합니다.

  1. Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 클러스터 및 인스턴스 목록에서 기본 또는 읽기 풀 인스턴스를 클릭합니다.

  3. 쿼리 통계를 클릭합니다.

  4. '설정 수정'을 클릭합니다.

  5. 쿼리 통계 설정 수정 창에서 AlloyDB용 고급 쿼리 통계 기능 사용 설정 > 활성 쿼리 분석을 선택합니다.

  6. 변경사항 저장을 클릭합니다.

  7. 변경사항을 적용하려면 다시 시작 창에서 확인 및 다시 시작을 클릭합니다.

Databases의 Gemini 지원을 사용하여 PostgreSQL용 AlloyDB 리소스를 모니터링하고 문제를 해결할 수 있습니다. 자세한 내용은 Gemini 지원을 통한 모니터링 및 문제 해결을 참고하세요.

활성 쿼리 보기

활성 쿼리를 보려면 다음을 수행합니다.

  1. 커스텀 역할을 만들고 databaseinsights.monitoringViewer Identity and Access Management (IAM) 권한을 추가합니다.

  2. 활성 쿼리를 보려는 각 사용자에 대해 이 역할을 추가합니다.

  3. Google Cloud 콘솔에서 AlloyDB 페이지를 엽니다.

    AlloyDB로 이동

  4. 클러스터 이름을 클릭하여 개요 페이지를 엽니다.

  5. 쿼리 통계 탭을 선택합니다. 쿼리 통계 대시보드에는 선택한 클러스터에 대한 세부정보가 표시됩니다.

  6. 활성 쿼리 보기 탭을 클릭합니다. 이 탭에는 실행 중인 활성 쿼리의 요약과 함께 가장 오래 실행 중인 상위 50개 트랜잭션이 표시됩니다.

    다음 중 하나를 기준으로 정보를 필터링할 수 있습니다.

    • 데이터베이스: 특정 데이터베이스 또는 모든 데이터베이스에서 쿼리 로드를 필터링합니다.
    • 사용자: 특정 데이터베이스 사용자 또는 모든 사용자의 쿼리 부하를 필터링합니다.
    • 노드 ID: 읽기 풀 인스턴스에 대해서만 표시됩니다. 특정 읽기 풀 인스턴스 노드 또는 모든 노드의 쿼리 부하를 필터링합니다.

    모든 정규화된 활성 쿼리의 요약 스코어카드: 다음 매개변수를 기준으로 총 연결을 표시하여 모든 활성 쿼리 개요를 제공합니다.

    • 연결 상태로 분류된 활성 연결 분포
    • 다양한 대기 이벤트 유형에 따른 활성 연결 분포
    • 유휴 상태가 아닌 쿼리의 트랜잭션 기간 분포입니다.

    가장 오래 실행 중인 트랜잭션: 내림차순 실행 시간을 기준으로 activeidle in transaction 상태의 상위 50개 실행 중인 쿼리의 개요를 제공합니다.

쿼리 통계 대시보드에서 정규화된 활성 쿼리 중 상위 50개 목록을 볼 수 있습니다.

정규화된 활성 쿼리는 민감한 정보를 삭제하고 다이제스트를 반환합니다. WHERE 절 값을 제외하고 동일한 두 쿼리는 동일한 다이제스트를 갖습니다. 예를 들어 다음 세 가지 쿼리 예시를 살펴보겠습니다.

  • select * from my_table where id = 1;
  • select * from my_table where id = 2;
  • select * from my_table where id = 100;

이러한 쿼리의 정규화된 버전은 다음 다이제스트입니다.

select * from my_table where id = ?;

다른 세션에서 실행되는 쿼리는 대시보드에 다른 항목으로 표시됩니다.

가장 오래 실행 중인 트랜잭션 보기

다음 표에서는 쿼리 통계 대시보드의 가장 오래 실행 중인 트랜잭션 테이블의 열을 설명합니다.

열 이름 설명
프로세스 ID 프로세스 ID는 데이터베이스 연결의 고유 식별자입니다.
노드 ID 노드 ID는 쿼리가 실행되는 읽기 풀 인스턴스 노드의 고유 식별자입니다.
쿼리 정규화된 SQL 쿼리 텍스트입니다.
상태 연결의 현재 상태입니다. 상태 값은 activeidle in transaction입니다.
세션 시간 현재 세션의 시간(초)입니다.
트랜잭션 기간 현재 트랜잭션의 시간 (초)입니다.
쿼리 기간 현재 활성 쿼리의 시간 (초)입니다. idle in transaction 상태의 쿼리는 활성 상태가 아니므로 쿼리 시간은 0입니다.
대기 이벤트 유형 쿼리 실행 중에 발생한 대기 이벤트 유형입니다.
대기 이벤트 쿼리 실행 중에 발생한 대기 이벤트입니다.
데이터베이스 이 연결이 실행되는 데이터베이스 이름입니다.
애플리케이션 이름 이 연결이 실행되는 애플리케이션 이름입니다.
사용자 이름 데이터베이스에 연결된 데이터베이스 사용자의 이름입니다.
클라이언트 주소 쿼리를 보낸 클라이언트의 특정 IP 주소입니다.
작업 트랜잭션을 종료하기 위한 링크가 포함됩니다.

디스플레이가 60초마다 자동으로 새로고침됩니다.

데이터베이스사용자 필드를 필터링에 사용하면 페이지의 데이터가 새로고침됩니다.

정적 데이터를 분석하려면 자동 새로고침을 사용 중지하고 필요에 따라 가장 오래 실행된 트랜잭션 테이블의 필터 필드를 사용하세요.

쿼리 또는 거래 종료

쿼리 또는 트랜잭션을 종료하려면 databaseinsights.operationsAdmin 역할이 있어야 합니다. 자세한 내용은 IAM 기본 및 사전 정의된 역할 참조를 확인하세요.

트랜잭션에는 여러 개의 쿼리가 포함될 수 있습니다. 현재 활성 상태인 쿼리를 확인하려면 가장 오래 실행 중인 트랜잭션 테이블의 쿼리 열을 참고하세요.

쿼리 또는 트랜잭션을 종료하려면 다음 단계를 수행합니다.

  1. 가장 오래 실행 중인 트랜잭션 테이블에서 쿼리를 선택합니다.
  2. 작업 열까지 오른쪽으로 스크롤합니다.
  3. 연결 종료를 클릭합니다.
  4. 연결 종료 창에서 확인을 클릭합니다.

    종료가 시작되면 페이지가 새로고침됩니다. 종료에 실패해도 메시지가 표시되지 않으며 활성 쿼리 목록에 쿼리가 계속 표시됩니다. 종료가 성공하면 쿼리가 목록에 더 이상 표시되지 않습니다.

다음 단계