이 문서에서는 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 trace 컨텍스트입니다.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 주소입니다.