고급 쿼리 통계 참조

문서 버전을 선택합니다.

이 문서에서는 AlloyDB Omni의 고급 쿼리 통계에 대한 구성 매개변수, 원격 분석 측정기준, 관측 가능성 뷰 및 함수를 설명합니다.

고급 쿼리 통계 사용 설정 및 쿼리에 대한 자세한 내용은 고급 쿼리 통계를 사용하여 쿼리 성능 모니터링을 참조하세요.

구성 매개변수

데이터베이스를 다시 시작할 필요가 없는 매개변수 변경사항을 적용하려면 ALTER SYSTEM SET를 실행한 후 SELECT pg_reload_conf()를 실행합니다. 다음 표에서는 고급 쿼리 통계의 구성 매개변수를 설명합니다.

매개변수 유형 기본값 다시 시작 필요 설명
google_insights_v2.enabled boolean off `shared_preload_libraries`를 사용한 초기 사용 설정의 경우 예입니다. pg_reload_conf()를 사용한 후속 다시 로드의 경우 아니요입니다. 인스턴스 전반에서 고급 쿼리 통계 원격 분석 수집을 사용 설정하거나 사용 중지합니다.
google_insights_v2.qi_max_query_string_length integer 10240 아니요 (pg_reload_conf()로 다시 로드) 리터럴 값이 $1, $2와 같은 위치 매개변수로 마스크 처리되는 정규화된 SQL 템플릿에 기록된 최대 바이트 길이 (1024~102400)를 설정합니다.
google_insights_v2.qi_preserve_comments boolean off 아니요 (pg_reload_conf()로 다시 로드) 정규화된 쿼리 문자열 내에 SQL 주석을 보존할지 여부를 제어합니다.
google_insights_v2.qi_track_wait_event_types boolean on 아니요 (pg_reload_conf()로 다시 로드) 상위 수준 wait_class 병목 카테고리(예: CPU, IO, Lock, Timeout, IPC)를 기록합니다.
google_insights_v2.qi_track_wait_events boolean on 아니요 (pg_reload_conf()로 다시 로드) 세분화된 PostgreSQL wait_event 이름을 기록합니다. 예: DataFileExtend, transactionid, WALWrite.
google_insights_v2.qi_track_client_address boolean off 아니요 (pg_reload_conf()로 다시 로드) 쿼리 및 클라이언트 주소 통계 뷰에서 연결 클라이언트 IP 주소를 기록합니다.
google_insights_v2.qi_track_tag boolean off 아니요 (pg_reload_conf()로 다시 로드) SQL 주석에서 SQLCommenter 태그와 같은 태그 추적을 사용 설정합니다.
google_insights_v2.qi_track_active_queries boolean off 아니요 (pg_reload_conf()로 다시 로드) 활성 쿼리 및 열린 트랜잭션의 실시간 추적을 사용 설정합니다.

측정기준별 관측 가능성 뷰 및 측정항목

다음 섹션에서는 각 원격 분석 측정기준에 대해 google_insights_v2 스키마에서 사용할 수 있는 관측 가능성 뷰 및 측정항목 열을 나열합니다.

쿼리

쿼리 측정기준은 인스턴스 전반에서 쿼리의 실행 통계 및 정규화된 SQL 텍스트를 추적합니다. 정규화된 쿼리 텍스트에서 SQL 주석을 보존하려면 google_insights_v2.qi_preserve_comments를 on으로 설정합니다.

이 측정기준에는 다음 뷰와 열을 사용할 수 있습니다.

  • 모니터링 가능성 뷰:
    • observability_service_query_view
    • observability_service_query_coarse_1_view
    • observability_service_query_coarse_2_view
  • 관련 열:
    • query_id: 정규화된 SQL 쿼리의 해시 식별자입니다.
    • query: 정규화된 SQL 쿼리 텍스트입니다.
    • database: 쿼리가 실행된 논리적 데이터베이스입니다.
    • username: 쿼리를 실행한 데이터베이스 역할입니다.
    • total_execution_time: 누적 실행 시간(마이크로초)입니다.
    • total_wait_time: 누적 대기 시간(마이크로초)입니다.
    • total_read_time: 누적 디스크 읽기 시간(마이크로초)입니다.
    • total_write_time: 누적 디스크 쓰기 시간(마이크로초)입니다.
    • total_rows: 쿼리에 의해 반환되거나 영향을 받는 총 행 수입니다.
    • total_shared_blocks_hit: 총 공유 버퍼 적중 수입니다.
    • total_shared_blocks_read: 디스크에서 읽은 총 공유 블록 수입니다.
    • count: 쿼리가 실행된 총 횟수입니다.
    • recorded_on: 원격 분석 간격이 기록된 타임스탬프입니다.

대기 이벤트 유형

대기 이벤트 유형 측정기준은 google_insights_v2.qi_track_wait_event_types가 on(기본적으로 사용 설정됨)으로 설정된 경우 상위 수준 wait_class 병목 카테고리를 기록합니다.

이 측정기준에는 다음 뷰와 열을 사용할 수 있습니다.

  • 모니터링 가능성 뷰:
    • observability_service_wait_event_no_query_view
    • observability_service_wait_event_stats_by_query_view
  • 관련 열:
    • wait_class: 대기 이벤트 카테고리(IO, Lock, LWLock, CPU, Internal wait event 등)입니다.
    • wait_event: 대기 클래스 내의 세분화된 PostgreSQL 대기 이벤트 이름입니다.
    • time_spent: 대기 이벤트 유형의 누적 대기 시간(마이크로초)입니다.
    • count: 대기 이벤트 유형이 발생한 총 횟수입니다.
    • database: 대기 이벤트가 발생한 논리적 데이터베이스입니다.
    • username: 대기 이벤트와 연결된 데이터베이스 역할입니다.
    • tag_id: 연결된 SQLCommenter 태그 집합의 숫자 식별자입니다.
    • tag_string: 애플리케이션 태그가 포함된 원시 SQL 주석 문자열입니다.
    • recorded_on: 원격 분석 간격이 기록된 타임스탬프입니다.
    • query_id: 쿼리의 해시 식별자 (observability_service_wait_event_stats_by_query_view에 있음)입니다.

대기 이벤트

대기 이벤트 측정기준은 세분화된 PostgreSQL wait_event 이름을 기록합니다. google_insights_v2.qi_track_wait_events이 on으로 설정된 경우 (기본적으로 사용 설정됨)

이 측정기준에는 다음 뷰와 열을 사용할 수 있습니다.

  • 모니터링 가능성 뷰:
    • observability_service_wait_event_no_query_view
    • observability_service_wait_event_stats_by_query_view
  • 관련 열:
    • wait_event: 특정 PostgreSQL 대기 이벤트 이름(DataFileExtend, DataFileRead, WALWrite, Internal wait event 등)입니다.
    • wait_class: 대기 이벤트가 속한 대기 이벤트 카테고리입니다.
    • time_spent: 대기 이벤트의 누적 대기 시간(마이크로초)입니다.
    • count: 대기 이벤트가 발생한 총 횟수입니다.
    • database: 대기 이벤트가 발생한 논리적 데이터베이스입니다.
    • username: 대기 이벤트와 연결된 데이터베이스 역할입니다.
    • tag_id: 연결된 SQLCommenter 태그 집합의 숫자 식별자입니다.
    • tag_string: 애플리케이션 태그가 포함된 원시 SQL 주석 문자열입니다.
    • recorded_on: 원격 분석 간격이 기록된 타임스탬프입니다.
    • query_id: 쿼리의 해시 식별자 (observability_service_wait_event_stats_by_query_view에 있음)입니다.

데이터베이스

데이터베이스 측정기준은 google_insights_v2.enabled가 on으로 설정된 경우 논리적 데이터베이스당 리소스 소비 및 쿼리 볼륨을 추적합니다.

이 측정기준에는 다음 뷰와 열을 사용할 수 있습니다.

  • 모니터링 가능성 뷰:
    • observability_service_db_load_conn_view
    • observability_service_query_view
    • observability_service_wait_event_no_query_view
  • 관련 열:
    • database: 논리적 데이터베이스 이름입니다.
    • username: 데이터베이스에서 쿼리를 실행한 데이터베이스 역할입니다.
    • total_execution_time: 데이터베이스의 누적 쿼리 실행 시간(마이크로초)입니다.
    • total_wait_time: 데이터베이스의 누적 대기 시간(마이크로초)입니다.
    • count: 데이터베이스의 총 쿼리 실행 수입니다.
    • recorded_on: 원격 분석 간격이 기록된 타임스탬프입니다.

사용자 및 클라이언트 IP 주소

사용자 및 클라이언트 IP 주소 측정기준은 기본적으로 데이터베이스 역할(username)별로 부하를 추적합니다. 연결 클라이언트 IP 주소 (client_address)도 수집하려면 google_insights_v2.qi_track_client_address 을 on (off 기본값)으로 설정해야 합니다.

이 측정기준에는 다음 뷰와 열을 사용할 수 있습니다.

  • 모니터링 가능성 뷰:
    • observability_service_query_view
    • observability_service_client_address_stats_by_query_view
  • 관련 열:
    • client_address: 연결 클라이언트 IP 주소 (google_insights_v2.qi_track_client_address이 on인 경우)입니다.
    • username: 데이터베이스 역할 이름입니다.
    • database: 논리적 데이터베이스 이름입니다.
    • query_id: 정규화된 SQL 쿼리의 해시 식별자입니다.
    • time_spent: 클라이언트 주소의 누적 쿼리 실행 시간(마이크로초)입니다.
    • count: 사용자 또는 클라이언트 IP 주소의 총 쿼리 실행 수입니다.
    • recorded_on: 원격 분석 간격이 기록된 타임스탬프입니다.

태그

태그 측정기준은 애플리케이션 태그 메타데이터별로 쿼리 실행 통계를 추적합니다. 태그 측정항목을 수집하려면 google_insights_v2.qi_track_tag를 on (기본적으로 off)으로 설정해야 합니다. off로 설정하면 이러한 뷰는 행을 반환하지 않습니다.

이 측정기준에는 다음 뷰와 열을 사용할 수 있습니다.

  • 모니터링 가능성 뷰:
    • observability_service_db_load_tag_view
    • observability_service_tag_view
  • 관련 열:
    • tag_id: 애플리케이션 태그 조합의 숫자 식별자입니다.
    • tag_string: 애플리케이션 태그가 포함된 원시 SQL 주석 문자열입니다.
    • application: SQLCommenter 태그에서 추출된 애플리케이션 이름입니다.
    • db_driver: SQLCommenter 태그에서 추출된 데이터베이스 드라이버입니다.
    • framework_name: SQLCommenter 태그에서 추출된 애플리케이션 프레임워크 이름입니다.
    • framework_controller: SQLCommenter 태그에서 추출된 프레임워크 컨트롤러입니다.
    • framework_action: SQLCommenter 태그에서 추출된 프레임워크 작업입니다.
    • framework_route: SQLCommenter 태그에서 추출된 프레임워크 경로입니다.
    • traceparent: SQLCommenter 태그에서 추출된 W3C trace 컨텍스트입니다.
    • database: 태그가 지정된 쿼리가 실행된 논리적 데이터베이스 이름입니다.
    • username: 태그가 지정된 쿼리를 실행한 데이터베이스 역할입니다.
    • total_execution_time: 태그 조합의 누적 쿼리 실행 시간(마이크로초)입니다.
    • count: 태그 조합의 총 쿼리 실행 수입니다.
    • recorded_on: 원격 분석 간격이 기록된 타임스탬프입니다.

활성 쿼리

활성 쿼리 측정기준은 실행 중인 쿼리 및 열린 트랜잭션을 실시간으로 추적합니다. 활성 세션을 쿼리하려면 google_insights_v2.qi_track_active_queries를 on으로 설정해야 합니다. off로 설정하면 이러한 뷰를 쿼리할 때 오류가 반환됩니다.

이 측정기준에는 다음 뷰와 열을 사용할 수 있습니다.

  • 모니터링 가능성 뷰:
    • stat_activity
    • stat_activity_v3
  • 관련 열:
    • pid: 백엔드 프로세스 ID입니다. 세션을 종료하려면 프로세스 ID를 PostgreSQL pg_terminate_backend(pid) 시스템 함수에 전달합니다.
    • normalized_query_hash: 정규화된 SQL 쿼리의 해시 식별자입니다.
    • normalized_query: 활성 쿼리의 정규화된 SQL 텍스트입니다.
    • state: 현재 백엔드 상태(active 또는 idle in transaction 등)입니다.
    • backend_start: 현재 세션이 시작된 타임스탬프입니다. 세션 시간을 초 단위로 계산하려면 EXTRACT(EPOCH FROM (clock_timestamp() - backend_start))를 계산합니다.
    • xact_start: 현재 트랜잭션이 시작된 타임스탬프입니다. 트랜잭션 기간을 초 단위로 계산하려면 EXTRACT(EPOCH FROM (clock_timestamp() - xact_start))를 계산합니다.
    • query_start: 현재 쿼리가 시작된 타임스탬프입니다. 쿼리 기간을 초 단위로 계산하려면 EXTRACT(EPOCH FROM (clock_timestamp() - query_start))를 계산합니다.
    • wait_event_type: 백엔드가 대기 중인 경우 대기 이벤트 카테고리입니다.
    • wait_event: 백엔드가 대기 중인 경우 대기 이벤트 이름입니다.
    • database: 활성 세션의 논리적 데이터베이스 이름입니다.
    • username: 활성 세션의 데이터베이스 역할 이름입니다.
    • application_name: 연결 애플리케이션 이름입니다.
    • client_addr: 연결 클라이언트 IP 주소입니다.