이 페이지에서는 AlloyDB의 고급 쿼리 통계 기능을 사용하여 기본 및 읽기 풀 인스턴스 모두에서 쿼리 성능 문제를 거의 실시간으로 감지하고 분석하는 방법을 설명합니다. AlloyDB의 고급 쿼리 통계 기능에 관한 개요는 AlloyDB의 고급 쿼리 통계 기능 개요를 참고하세요.
표준 쿼리 통계를 사용하는 방법을 알아보려면 쿼리 통계를 사용하여 쿼리 성능 개선을 참고하세요.
Databases의 Gemini 지원을 사용하여 AlloyDB 리소스를 모니터링하고 문제를 해결할 수 있습니다. 자세한 내용은 Gemini 지원을 통한 모니터링 및 문제 해결을 참고하세요.
시작하기 전에
쿼리 통계 대시보드에 액세스하려면 Google Cloud 프로젝트에서 PostgreSQL용 AlloyDB에 대한 액세스를 사용 설정합니다.
필요한 역할
AlloyDB의 고급 쿼리 통계 기능을 사용하려면 다음 작업을 할 수 있는 권한이 필요합니다.
- AlloyDB의 고급 쿼리 통계 기능에 액세스하려면 AlloyDB 쿼리 통계 대시보드에 액세스할 권한이 필요합니다.
- AlloyDB의 고급 쿼리 통계 기능 설정을 수정하려면 AlloyDB 인스턴스를 업데이트할 권한이 필요합니다.
이러한 권한을 얻으려면 관리자에게 다음 역할 중 하나를 부여해 달라고 요청합니다.
- 기본 보기 권한 사용자 (
roles/viewer
) - 데이터베이스 통계 뷰어 (
roles/databaseinsights.viewer
)
역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
AlloyDB의 고급 쿼리 통계 기능 사용 설정
AlloyDB 인스턴스에 고급 쿼리 통계 구성을 사용 설정하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 및 인스턴스 목록에서 인스턴스를 클릭합니다.
쿼리 통계를 클릭합니다.
사용 설정 또는 설정 수정을 클릭합니다.
쿼리 통계 설정 수정 탭에서 AlloyDB에 고급 쿼리 통계 기능 사용 설정 체크박스를 선택합니다.
이렇게 하면 기본적으로 다음과 같은 구성 변경사항이 적용됩니다.
- 대기 이벤트 분석 및 활성 쿼리 분석 체크박스를 사용 설정합니다.
- 쿼리 길이를 4,500B에서 100,000B로 늘립니다.
- 최대 샘플링 레이트를 분당 쿼리 계획 샘플 20개에서 200개로 늘립니다.
변경사항을 저장합니다. 이렇게 하면 PostgreSQL용 AlloyDB 인스턴스가 다시 시작됩니다.
gcloud alpha alloydb instances update INSTANCE \
--cluster=CLUSTER \
--project=PROJECT \
--region=REGION \
--observability-config-enabled
다음을 바꿉니다.
INSTANCE
: 업데이트할 인스턴스의 ID입니다.CLUSTER
: 인스턴스 클러스터의 ID입니다.PROJECT
: 클러스터 프로젝트의 ID입니다.REGION
: 클러스터의 리전입니다(예:us-central1
).
--observability-config-enabled
플래그를 사용하면 AlloyDB 인스턴스의 데이터를 수집하고 분석하여 성능과 상태를 모니터링할 수 있습니다. 고급 쿼리 통계를 사용 중지하려면 --no-observability-config-enabled
을 사용하세요.
Terraform을 사용하여 AlloyDB 인스턴스에 고급 쿼리 통계를 사용 설정하려면 observability_config
블록에서 enabled
필드를 true
로 설정합니다.
예를 들면 다음과 같습니다.
observability_config { enabled = true ... }
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참고하세요.
이 예에서는 AlloyDB 인스턴스에서 고급 쿼리 통계를 사용 설정합니다. 이 호출의 전체 매개변수 목록은 메서드: projects.locations.clusters.instances.patch를 참고하세요. 고급 쿼리 통계 설정에 대한 자세한 내용은 고급 쿼리 통계 설정 수정을 참고하세요.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
CLUSTER_ID
: 생성한 클러스터의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.PROJECT_ID
: 클러스터를 배치하려는 프로젝트의 ID입니다.LOCATION_ID
: 클러스터 리전의 ID입니다.INSTANCE_ID
: 만들려는 기본 인스턴스의 이름입니다.
인스턴스 구성을 사용 설정하려면 다음 PATCH
요청을 사용하세요.
PATCH https://alloydb.googleapis.com/v1beta/{instance.name=projects/PROJECT_ID /locations/LOCATION_ID /clusters/CLUSTER_ID /instances/INSTANCE_ID ?updateMask=observabilityConfig.enabled}
updateMask=observabilityConfig.enabled
쿼리 매개변수는 API에 observabilityConfig
블록 내의 enabled
필드를 업데이트하도록 지시합니다.
요청 JSON 본문은 다음과 같습니다.
{
"observabilityConfig": {
"enabled" : true,
}
}
향상된 쿼리 통계를 사용 설정한 후에는 향상된 쿼리 통계 설정을 수정할 수 있습니다.
고급 기능 설정 수정
AlloyDB 인스턴스의 고급 쿼리 통계 구성을 수정하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 및 인스턴스 목록에서 인스턴스를 클릭합니다.
쿼리 통계를 클릭합니다.
설정 수정을 클릭한 다음 다음 설정을 수정합니다.
- 대기 이벤트 분석 대기 이벤트 분석을 사용하면 데이터베이스의 성능 문제를 식별하고 해결할 수 있습니다. 대기 이벤트는 쿼리 관련 작업 처리가 지연되는 구성요소입니다.
- 활성 쿼리 분석: 실행 중인 쿼리를 추적합니다.
- 쿼리 주석 저장 조사 중인 쿼리와 관련되어 있고 쿼리 길이의 일부로 포함된 주석을 확인하여 쿼리 컨텍스트에 대해 알아보세요. 추가 메모리는 필요하지 않습니다. 주석에 민감한 정보가 포함되어 있다면 사용자 액세스에 유의하세요.
- 색인 자문 사용 설정 클러스터의 쿼리 통계 페이지에 색인 생성 추천을 표시합니다.
- 실행 빈도 선택 필드에서 맞춤 콘텐츠의 업데이트 빈도를 정의할 수 있습니다.
- 클라이언트 IP 주소 저장 클라이언트 IP 주소를 추적하고 해당 데이터를 분석하려면 사용 설정하세요.
- 애플리케이션 태그 저장 요청을 생성하는 API와 MVC(Model-View-Controller) 경로를 알아보고 해당 데이터를 그룹화하여 이를 기준으로 측정항목을 실행합니다.
- 쿼리 계획 샘플링 쿼리 계획은 쿼리 샘플을 완료하는 데 사용되는 작업을 시각화합니다. 샘플링 레이트는 데이터베이스 전반에서 분당 캡처 가능한 쿼리 샘플 수를 결정합니다. 비율이 높을수록 메모리가 더 필요합니다.
- 쿼리 길이 필드에서 쿼리 길이의 기본 한도를 256바이트에서 최대 100KB로 변경할 수 있습니다. 쿼리 길이가 길수록 메모리가 더 많이 필요합니다. 쿼리 길이를 변경하려면 인스턴스를 다시 시작해야 합니다.
변경사항을 저장합니다.
gcloud alpha alloydb instances update INSTANCE \
--cluster=CLUSTER \
--project=PROJECT \
--region=REGION \
--observability-config-preserve-comments \
--observability-config-track-wait-events \
--observability-config-max-query-string-length=QUERY_LENGTH \
--observability-config-record-application-tags \
--observability-config-query-plans-per-minute=QUERY_PLANS \
--observability-config-track-active-queries
다음을 바꿉니다.
INSTANCE
: 업데이트할 인스턴스의 ID입니다.CLUSTER
: 인스턴스 클러스터의 ID입니다.PROJECT
: 클러스터 프로젝트의 ID입니다.REGION
: 클러스터의 리전입니다(예:us-central1
).QUERY_LENGTH
: 1,024~100,000바이트 범위의 쿼리 길이입니다. 기본 쿼리 길이는 10,240바이트입니다. 쿼리 길이가 길수록 분석 쿼리에 더 유용하지만 더 많은 메모리가 필요합니다. 쿼리 길이를 변경하려면 인스턴스를 다시 시작해야 합니다. 길이 제한을 초과하는 쿼리에도 태그를 추가할 수 있습니다.QUERY_PLANS
: 분당 구성할 쿼리 계획 수입니다. 기본적으로 인스턴스의 모든 데이터베이스에서 실행된 쿼리 계획 샘플이 분당 최대 20개까지 캡처됩니다. 이 값을 1~20 사이의 숫자로 변경하세요. 샘플링을 사용 중지하려면 0을 입력합니다. 샘플링 레이트를 늘리면 더 많은 데이터 포인트를 얻을 가능성이 있지만 성능에 부정적인 영향을 줄 수 있습니다.
필요한 경우 다음 선택적 관측 가능성 플래그를 사용합니다.
--observability-config-track-active-queries
: 활성 쿼리 추적을 사용 설정합니다. 이 기능을 사용 중지하려면--no-observability-config-track-active-queries
을 사용하세요.--observability-config-record-application-tags
: 요청을 실행하는 API 및 MVC (Model-View-Controller) 경로를 확인하고 이에 대해 측정항목을 실행할 데이터를 그룹화하는 데 도움이 되는 애플리케이션 태그를 저장합니다. 이 옵션을 사용하려면 특정 태그 집합을 사용하여 쿼리에 주석을 추가해야 합니다. 애플리케이션 태그를 저장하지 않으려면--no-observability-config-record-application-tags
를 사용하세요.--observability-config-preserve-comments
: SQL 코드에 추가된 주석을 유지하여 실행에 영향을 주지 않고 코드에 관한 정보를 제공합니다. 주석을 유지하지 않으려면--no-observability-config-preserve-comments
를 사용하세요.--observability-config-track-wait-events
: 각 대기 이벤트 유형의 이벤트 대기를 사용 설정합니다. 대기 이벤트를 추적하지 않으려면--no-observability-config-track-wait-events
를 사용하세요.
Terraform을 사용하여 AlloyDB 인스턴스에서 고급 쿼리 통계를 구성하려면 google_alloydb_instance
리소스를 사용하세요.
다음은 그 예시입니다.
observability_config { enabled =ENABLED_VALUE preserve_comments =PRESERVE_COMMENTS_VALUE track_wait_events =TRACK_WAIT_EVENTS_VALUE max_query_string_length =MAX_QUERY_STRING_LENGTH_VALUE record_application_tags =RECORD_APPLICATION_TAGS_VALUE query_plans_per_minute =QUERY_PLANS_PER_MINUTE_VALUE track_active_queries =TRACK_ACTIVE_QUERIES_VALUE }
다음을 바꿉니다.
ENABLED_VALUE
: 인스턴스의 관측 가능성 기능 상태입니다. 설정을 수정할 때true
로 설정하고 필요에 따라 다른 플래그를 지정합니다.PRESERVE_COMMENTS_VALUE
: 쿼리 문자열에서 주석을 보존합니다. 기본값은false
입니다.TRACK_WAIT_EVENTS_VALUE
: 인스턴스의 쿼리 실행 중에 대기 이벤트를 기록합니다. 기본값은true
입니다.MAX_QUERY_STRING_LENGTH_VALUE
: 쿼리 문자열 길이입니다. 기본값은10240
입니다. 1024~100000 사이의 정수가 유효합니다.RECORD_APPLICATION_TAGS_VALUE
: 인스턴스의 애플리케이션 태그를 기록합니다. 기본값은true
입니다.QUERY_PLANS_PER_MINUTE_VALUE
: 모든 쿼리를 합산하여 통계에서 분당 캡처한 쿼리 실행 계획 수입니다. 기본값은20
입니다. 0과 20 사이의 정수가 유효합니다.TRACK_ACTIVE_QUERIES_VALUE
: 실행 중인 쿼리를 추적합니다. 기본값은false
입니다.Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참고하세요.
이 예에서는 AlloyDB 인스턴스에 고급 쿼리 통계 설정을 구성합니다. 이 호출의 전체 매개변수 목록은 메서드: projects.locations.clusters.instances.patch를 참고하세요.
고급 쿼리 통계 설정을 구성하려면 enabled
필드를 true
로 설정하고 필요에 따라 다른 선택사항 필드를 수정합니다. 이 호출의 전체 필드 목록은 ObservabilityInstanceConfig를 참고하세요.
요청 데이터를 사용하기 전에 다음을 바꿉니다.
CLUSTER_ID
: 생성한 클러스터의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈을 포함할 수 있습니다.PROJECT_ID
: 클러스터를 배치하려는 프로젝트의 ID입니다.LOCATION_ID
: 클러스터 리전의 ID입니다.INSTANCE_ID
: 만들려는 기본 인스턴스의 이름입니다.
인스턴스 구성을 수정하려면 다음 PATCH
요청을 사용하세요.
PATCH https://alloydb.googleapis.com/v1beta/{instance.name=projects/PROJECT_ID /locations/LOCATION_ID /clusters/CLUSTER_ID /instances/INSTANCE_ID ?updateMask=observabilityConfig.enabled,observabilityConfig.preserveComments,observabilityConfig.trackWaitEvents,observabilityConfig.maxQueryStringLength,observabilityConfig.recordApplicationTags,observabilityConfig.queryPlansPerMinute,observabilityConfig.trackActiveQueries,observabilityConfig.trackClientAddress}
모든 고급 검색어 통계 필드를 구성하는 요청 JSON 본문은 다음과 같습니다.
{
"observabilityConfig": {
"enabled" : true,
"preserveComments": true,
"trackWaitEvents": true,
"maxQueryStringLength": 5000,
"recordApplicationTags": true,
"queryPlansPerMinute": 100,
"trackActiveQueries": true,
}
}
쿼리 성능 문제 감지 및 진단
고급 쿼리 통계를 사용하여 성능 문제를 감지하고 진단할 수 있습니다. 쿼리 통계 대시보드에는 선택한 데이터베이스에서 실행된 쿼리가 시간 경과에 따라 수행하는 작업을 측정한 값 (CPU-초)인 데이터베이스 부하가 표시됩니다. 실행 중인 각 쿼리는 리소스를 사용하거나 대기합니다. 데이터베이스 부하는 지정된 기간에 완료된 모든 쿼리에 걸린 시간과 실제로 경과한 시간의 비율입니다.
실행된 쿼리에서 수행된 작업의 측정값 보기
데이터베이스 부하 그래프는 데이터베이스에서 실행된 모든 쿼리가 수행한 작업을 (CPU 초 단위로) 측정하고 선택된 측정기준으로 분할하여 표시합니다. 데이터베이스 부하는 차트 드롭다운에서 선택한 분산 데이터로 나뉩니다.
다음 측정기준을 기준으로 데이터베이스 부하를 분류할 수 있습니다.
- 쿼리
- 대기 이벤트 유형
- 대기 이벤트
- 데이터베이스
- 사용자
데이터베이스에서 실행된 쿼리로 완료된 작업을 보려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 및 인스턴스 목록에서 인스턴스를 클릭합니다.
쿼리 통계를 클릭합니다.
데이터베이스와 사용자를 선택합니다.
데이터를 표시할 총 실행 시간을 선택합니다(예: 1시간 또는 6시간 또는 맞춤 시간).
실행 시간별 데이터베이스 부하 드롭다운에서 조사할 측정기준을 선택합니다. 선택한 측정기준에 따라 그래프에는 선택한 측정기준이 전체 데이터베이스 로드에 어떤 영향을 미치는지 표시됩니다. 예를 들어 데이터베이스 부하 차트 드롭다운에서 대기 이벤트 측정기준을 선택하면 선택한 데이터베이스 및 사용자의 선택한 기간 동안 발생한 모든 대기 이벤트의 세부정보가 데이터베이스 부하 차트에 표시됩니다.
데이터베이스 부하 차트에는 PostgreSQL에서 지원되는 9가지 대기 이벤트 유형과 대기 이벤트에 대한 데이터가 모두 표시됩니다. 대기 이벤트 및 유형의 수에 따라 기여도가 가장 높은 대기 이벤트 및 유형 10개가 표시됩니다. 대기 이벤트가 10개를 초과하면 상위 9개의 대기 이벤트가 표시되고 나머지는 기타 카테고리로 그룹화됩니다. 이 접근 방식은 쿼리, 데이터베이스, 사용자와 같은 다른 측정기준에도 적용됩니다.
데이터베이스 부하에 가장 큰 영향을 미치는 요소 보기
데이터베이스 부하별 상위 크기 표를 사용하면 데이터베이스 부하 차트에서 선택한 기간 및 측정기준에 대해 데이터베이스 부하에 가장 많이 기여하는 항목을 확인할 수 있습니다. 데이터베이스 부하별 상위 크기 표에서 선택한 측정기준에 따라 선택한 기간의 상위 값을 확인할 수 있습니다.
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 및 인스턴스 목록에서 인스턴스를 클릭합니다.
쿼리 통계를 클릭합니다.
데이터베이스와 사용자를 선택합니다.
데이터를 표시할 총 실행 시간을 선택합니다(예: 1시간 또는 6시간 또는 맞춤 시간).
데이터베이스 부하별 상위 크기 표에서 다음 중 하나를 클릭할 수 있습니다.
측정기준 설명 쿼리 테이블에는 총 실행 시간별로 정규화된 상위 쿼리가 표시됩니다. 각 쿼리에 대해 열에 표시되는 데이터는 다음과 같이 나열됩니다.
- 평균 실행 시간 (밀리초) 쿼리가 실행되는 평균 시간입니다.
- 총 실행 시간 (밀리초) 특정 쿼리에 걸린 총 실행 시간입니다.
- 반환된 행 쿼리로 가져온 행의 평균 개수입니다.
- 호출 횟수. 애플리케이션에서 쿼리를 호출한 횟수입니다.
- 차트 측정기준별 부하 비율(%) 원형 차트는 특정 쿼리에 대해 차트의 측정기준이 어떻게 분포되어 있는지 보여줍니다.
대기 이벤트 유형 이 표에는 선택한 기간 동안 발생한 상위 대기 이벤트 유형 목록이 표시됩니다.
- 평균 대기 시간 (밀리초) 쿼리가 특정 대기 이벤트 유형에서 소비한 평균 시간입니다.
- 총 대기 시간 (밀리초) 쿼리가 특정 대기 이벤트 유형에서 소비한 총 실행 시간입니다.
- 대기 이벤트 유형 수 선택한 시간 범위에서 특정 대기 이벤트 유형이 발생한 횟수입니다.
- 차트 측정기준별 부하 비율(%) 정사각형 차트는 데이터베이스 부하 차트 드롭다운에서 선택한 차트의 측정기준이 특정 대기 이벤트 유형에 걸쳐 어떻게 분포되어 있는지 보여줍니다.
대기 이벤트 이 표에는 선택한 기간 동안 발생한 상위 대기 이벤트 목록이 표시됩니다.
- 평균 대기 시간 (밀리초) 쿼리가 특정 대기 이벤트에서 소비한 평균 시간입니다.
- 총 대기 시간 (밀리초) 쿼리가 특정 대기 이벤트에서 소비한 총 실행 시간입니다.
- 대기 이벤트 수 선택한 시간 범위에서 특정 대기 이벤트가 발생한 횟수입니다.
- 차트 측정기준별 부하 비율(%) 정사각형 차트는 데이터베이스 부하 차트 드롭다운에서 선택한 차트의 측정기준이 특정 대기 이벤트에 분산되는 방식을 보여줍니다.
데이터베이스 이 표에는 선택한 기간 동안 실행된 모든 쿼리에서 부하에 기여한 상위 데이터베이스의 목록이 표시됩니다.
- 데이터베이스에 소비된 평균 시간 (밀리초) 쿼리가 특정 데이터베이스에 소비한 평균 시간입니다.
- 데이터베이스에 소비된 총 시간 (밀리초) 쿼리가 특정 데이터베이스에서 소비한 총 실행 시간입니다.
- 차트 측정기준별 부하 비율(%) 원형 차트는 데이터베이스 부하 차트 드롭다운에서 선택한 차트의 측정기준이 특정 데이터베이스에 분포된 방식을 보여줍니다.
사용자 이 표에는 선택한 기간 동안 실행된 모든 쿼리에서 상위 사용자 목록이 표시됩니다.
- 사용자에서 소비된 평균 시간 (밀리초) 쿼리가 특정 사용자에게 소비한 평균 시간입니다.
- 사용자에서 보낸 총 시간 (밀리초) 특정 사용자에서 쿼리가 소비한 총 실행 시간입니다.
- 차트 측정기준별 부하 비율(%) 필 차트는 데이터베이스 부하 차트 드롭다운에서 선택한 차트의 측정기준이 특정 사용자 간에 어떻게 분포되어 있는지 보여줍니다.
쿼리 실행 시간 보기
AlloyDB의 고급 쿼리 통계 기능은 데이터베이스 부하별 상위 크기 테이블에 데이터베이스 부하에 기여하는 상위 10개 쿼리를 표시합니다. 상위 쿼리는 선택한 기간 동안 데이터베이스 부하에 가장 많이 기여한 쿼리입니다. 후속 쿼리는 가장 긴 실행 시간의 비율입니다.
데이터베이스 부하별 상위 크기의 매개변수 실행 시간이 선택한 차트 측정기준 (쿼리, 대기 이벤트 유형, 대기 이벤트, 데이터베이스, 사용자)의 다양한 값에 미치는 영향을 알아보려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 및 인스턴스 목록에서 인스턴스를 클릭합니다.
쿼리 통계를 클릭합니다.
데이터베이스와 사용자를 선택합니다.
데이터베이스 부하별 상위 측정기준 표에서 차트 측정기준별 부하 비율을 확인하여 표의 매개변수가 데이터베이스 부하 차트의 매개변수에 미치는 영향을 알아보세요.
예를 들어 데이터베이스 부하 차트에서 모든 쿼리를 선택하고 데이터베이스 부하별 상위 크기 테이블에서 쿼리 탭을 클릭하면 쿼리별 부하 비율에 지정된 기간 동안 선택한 데이터베이스의 데이터베이스 부하에 가장 많이 기여한 쿼리의 목록이 표시됩니다.
쿼리 실행 시간에 관한 세부정보 보기
세부정보에서 데이터베이스 부하 차트 및 표에서 선택한 측정기준, 각 대기 이벤트의 정의, 기타 카테고리에 캡슐화된 데이터를 비롯하여 쿼리 실행 시간에 관한 세부정보를 확인할 수 있습니다.
세부정보에는 쿼리 세부정보 화면의 다른 위치에 표시되지 않는 복잡한 정보의 세부정보도 표시됩니다. 이 정보에는 각 대기 이벤트의 정의가 포함됩니다.
쿼리 실행 시간에 관한 세부정보를 보려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 및 인스턴스 목록에서 인스턴스를 클릭합니다.
쿼리 통계를 클릭합니다.
데이터베이스와 사용자를 선택합니다.
데이터베이스 부하별 상위 크기 테이블에서 쿼리의 세부정보를 클릭합니다.
AlloyDB용 고급 쿼리 통계 기능은 정규화된 쿼리 ($1, $2 등)를 표시하여 리터럴 상수 값을 대체합니다. 예를 들면 다음과 같습니다.
UPDATE "demo_customer" SET "customer_id" = $1::uuid, "name" = $2, "address" = $3, "rating" = $4, "balance" = $5, "current_city" = $6, "current_location" = $7 WHERE "demo_customer"."id" = $8
고급 쿼리 통계가 유사한 쿼리를 집계하고 상수가 표시될 수 있는 모든 개인 식별 정보 (PII) 정보를 삭제할 수 있도록 상수 값이 무시됩니다.
정규화된 쿼리의 데이터베이스 부하 확인
선택한 정규화된 쿼리가 선택한 데이터베이스에서 시간 경과에 따라 실행한 쿼리 실행 시간 및 리소스 사용량 (CPU-초)을 측정값으로 표시하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 및 인스턴스 목록에서 인스턴스를 클릭합니다.
쿼리 통계를 클릭합니다.
데이터베이스와 사용자를 선택합니다.
데이터베이스 부하 차트에서 쿼리를 클릭합니다. 데이터베이스 부하를 계산하기 위해 데이터베이스 부하 차트는 분 경계에서 완료된 정규화된 쿼리에 걸린 시간을 실제 경과 시간으로 사용합니다.
데이터베이스 로드 차트 상단에는 집계 및 개인 식별 정보 (PII)로 인해 리터럴이 삭제된 정규화된 쿼리의 처음 10KB 문자가 표시됩니다.
이러한 각 상태에서 소비된 시간의 분포를 파악하는 데 도움이 되도록 AlloyDB의 고급 쿼리 통계 기능은 정규화된 쿼리 로드당 대기 이벤트 및 대기 이벤트 유형으로 분산합니다.
지연 시간 차트를 사용하여 쿼리 지연 시간을 살펴볼 수 있습니다. 지연 시간은 정규화된 쿼리에서 실제 경과 시간으로 완료하는 데 걸린 시간입니다. 쿼리의 일부를 실행하는 데 사용되는 여러 코어로 인해 쿼리의 데이터베이스 부하가 높은 경우에도 병렬 쿼리의 지연 시간은 경과된 실제 시간으로 측정됩니다.
백분위수로 필터링하여 50번째, 95번째 또는 99번째 백분위수를 확인하여 예상 실행 시간을 준수하지 않는 쿼리를 감지할 수 있습니다. 정규화된 쿼리의 이전 지연 시간을 분석하려면 기간을 변경합니다.
정규화된 쿼리 분석
쿼리 계획은 쿼리 샘플의 여러 작업에 대한 분석을 제공하여 정규화된 쿼리를 이해하고 분석하는 데 도움이 됩니다.
샘플 쿼리 계획은 정규화된 쿼리와 관련된 쿼리 계획 샘플에 대한 EXPLAIN ANALYZE
뷰를 제공합니다. 이는 쿼리 계획의 각 작업에 소비된 활성 시간의 분석을 제공하는 실행된 쿼리 계획입니다.
샘플 쿼리 계획을 보려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 및 인스턴스 목록에서 인스턴스를 클릭합니다.
쿼리 통계를 클릭합니다.
데이터베이스와 사용자를 선택합니다.
데이터를 표시할 총 실행 시간을 선택합니다(예: 1시간 또는 6시간 또는 맞춤 시간).
데이터베이스 부하별 상위 크기 테이블에서 쿼리를 클릭합니다.
쿼리 계획 샘플에서 차트의 점을 클릭하여 해당 쿼리의 쿼리 계획을 확인합니다.
태그를 사용하여 애플리케이션 성능 모니터링 및 문제 해결
고급 쿼리 통계는 애플리케이션 중심 모니터링을 제공하고 객체 관계형 매핑(ORM)으로 빌드된 애플리케이션의 성능 진단을 간소화합니다. 쿼리 태그 지정은 비즈니스 로직, 마이크로서비스, 기타 구성 등의 상위 수준 구성에서 문제를 찾는 데 도움이 됩니다. 애플리케이션에서 태그를 사용하여 다음을 수행할 수 있습니다.
- 데이터베이스 성능을 모니터링합니다.
- Sqlcommenter를 사용하여 애플리케이션 코드로 인한 성능 문제를 식별합니다.
- 데이터베이스 부하를 분석합니다.
- 태그별 부하를 확인합니다.
쿼리 통계에서 태그를 사용하는 방법을 알아보려면 쿼리 통계를 사용하여 쿼리 성능 개선을 참고하세요.
데이터베이스 계층에서 애플리케이션 문제 해결
고급 쿼리 통계는 특정 요청의 데이터베이스 레이어에서 애플리케이션의 문제를 파악하는 데 도움이 되는 컨텍스트 내 엔드 투 엔드 trace 뷰를 제공합니다. 컨텍스트 내 엔드 투 엔드 애플리케이션 trace를 사용하면 모델, 뷰, 컨트롤러, 경로별로 문제가 있는 쿼리의 소스를 파악할 수 있습니다.
OpenTelemetry를 사용 설정하면 스팬 정보가 SQL 주석의 태그 정보와 함께 데이터베이스로 전송됩니다. 문제의 원인을 식별하기 위해 애플리케이션에서 Cloud Logging으로 전송되는 trace가 데이터베이스 쿼리 계획 trace와 연결됩니다.
컨텍스트 내 트레이스를 보려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 및 인스턴스 목록에서 인스턴스를 클릭합니다.
쿼리 통계를 클릭합니다.
데이터베이스와 사용자를 선택합니다.
데이터베이스 부하별 상위 크기 표에서 항목을 클릭합니다.
쿼리 통계 세부정보 페이지에서 전체를 클릭합니다.
Cloud Trace를 사용하면 쿼리 계획의 단계마다 엔드 투 엔드 추적을 확인할 수도 있습니다. Cloud Trace에 액세스하려면 작업 > Trace를 선택합니다.
자주 묻는 질문(FAQ)
이 섹션에서는 고급 쿼리 통계 기능에 관해 자주 묻는 질문에 대한 답변을 제공합니다.
쿼리 문자열이 잘리는 이유는 무엇인가요?
기본적으로 고급 쿼리 통계는 쿼리 문자열에 10KB를 표시합니다. 디스플레이를 100KB까지 늘릴 수 있습니다.
데이터베이스 부하 차트에서 CPU 부하가 최대 코어 라인보다 높은 이유는 무엇인가요?
CPU 부하는 런타임과 Linux 스케줄러가 실행 중인 서버 프로세스를 예약하는 데 필요한 대기 시간을 모두 나타냅니다. 따라서 CPU 부하가 최대 코어 라인을 초과할 수 있습니다.
표준 쿼리 통계 측정항목을 사용할 수 있나요?
예. 표준 쿼리 통계는 Stackdriver를 통해 액세스할 수 있는 카운터를 생성합니다. 이러한 측정항목은 Cloud Monitoring API와 측정항목 탐색기 UI를 사용하여 사용할 수 있습니다. 자세한 내용은 Google Cloud 측정항목을 참고하세요.
최대 쿼리 문자열 길이는 얼마인가요?
표준 쿼리 통계 플러그인의 경우 최대 쿼리 문자열 길이는 4.5KB(영문 기준)로 제한됩니다. 고급 쿼리 통계의 경우 기본 문자열 길이는 10KB이고 최대 길이는 100KB로 제한됩니다.
보조 클러스터에서 고급 쿼리 통계 기능을 사용할 수 있나요?
보조 인스턴스가 있는 클러스터에서는 고급 쿼리 통계를 사용 설정할 수 없습니다. 클러스터에서 보조 인스턴스를 만들기 전에 클러스터의 모든 인스턴스에서 고급 쿼리 통계를 사용 중지해야 합니다.