이 문서에서는 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_viewobservability_service_query_coarse_1_viewobservability_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_viewobservability_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_viewobservability_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_viewobservability_service_query_viewobservability_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_viewobservability_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_viewobservability_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 트레이스 컨텍스트입니다.database: 태그가 지정된 쿼리가 실행된 논리적 데이터베이스 이름입니다.username: 태그가 지정된 쿼리를 실행한 데이터베이스 역할입니다.total_execution_time: 태그 조합의 누적 쿼리 실행 시간(마이크로초)입니다.count: 태그 조합의 총 쿼리 실행 수입니다.recorded_on: 원격 분석 간격이 기록된 타임스탬프입니다.
활성 쿼리
활성 쿼리 측정기준은 실행 중인 쿼리 및 열린 트랜잭션을 실시간으로 추적합니다. 활성 세션을 쿼리하려면 google_insights_v2.qi_track_active_queries를 on으로 설정해야 합니다. off로 설정하면 이러한 뷰를 쿼리할 때 오류가 반환됩니다.
이 측정기준에 사용할 수 있는 뷰 및 열은 다음과 같습니다.
- 모니터링 가능성 뷰:
stat_activitystat_activity_v3
- 관련 열:
pid: 백엔드 프로세스 ID입니다. 세션을 종료하려면 프로세스 ID를 PostgreSQLpg_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 주소입니다.