이 페이지에서는 데이터베이스에서 활성 상태로 있는 쿼리를 모니터링하고 문제 해결하는 방법을 설명합니다. 이러한 쿼리를 모니터링하면 시스템 지연 시간 및 높은 CPU 사용량에 대한 원인을 파악하는 데 도움이 될 수 있습니다.
쿼리 통계 대시보드에서 연관된 쿼리 및 통계와 함께 활성 트랜잭션 요약 및 트랜잭션 목록을 볼 수 있습니다. 트랜잭션은 트랜잭션 시작 시간으로 표시됩니다. 실행 중인 쿼리 수가 많으면 총 쿼리 중 일부만 결과가 표시될 수 있습니다.
Databases의 Gemini 지원을 사용하여 MySQL용 Cloud SQL 리소스를 관찰하고 문제를 해결할 수 있습니다. 자세한 내용은 Gemini 지원을 통한 관찰 및 문제 해결을 참조하세요.시작하기 전에
활성 쿼리를 보려면 다음을 수행해야 합니다.
- 데이터베이스의 Gemini를 설정합니다.
- 맞춤 역할을 만들고 다음 권한을 추가합니다.
할 일 목록 역할 권한 추천 보기 databaseinsights.viewer
databaseinsights.activeQueries.fetch
databaseinsights.activitySummary.fetch
권장사항 종료 databaseinsights.operationsAdmin
해당 사항 없음
활성 쿼리 사용 설정
활성 쿼리를 사용 설정하려면 다음 단계를 완료하세요.
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
- 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
- 구성 타일에서 구성 수정을 클릭합니다.
- 쿼리 통계 창을 펼칩니다.
- 쿼리 통계 사용 설정 체크박스가 선택 해제되어 있으면 선택합니다. 활성 쿼리 분석 체크박스가 표시됩니다.
- 이 체크박스가 선택 해제되어 있으면 선택합니다.
- 저장을 클릭합니다.
활성 쿼리 보기
활성 쿼리를 보려면 다음 단계를 완료하세요.
활성 쿼리를 보려는 각 사용자에 대해 이 역할을 추가합니다.
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
다음 중 하나를 수행하여 쿼리 통계 대시보드를 표시합니다.
- 쿼리 통계 탭을 선택합니다.
- 쿼리 통계로 이동하여 쿼리 및 성능에 대한 자세한 정보 보기를 클릭합니다. 쿼리 통계 대시보드가 열립니다. 상단에 인스턴스 세부정보가 표시됩니다.
활성 쿼리 뷰 탭을 클릭합니다.
여기에서 가장 오래 실행 중인 트랜잭션 테이블에 표시되는 쿼리 정보를 수정할 수 있습니다.
- 데이터베이스: 특정 데이터베이스 또는 모든 데이터베이스에서 쿼리 로드를 필터링합니다.
- 사용자: 특정 사용자 계정의 쿼리 부하를 필터링합니다.
- 모든 활성 쿼리의 요약 스코어카드: 다음 매개변수를 기준으로 총 연결을 표시하여 모든 활성 쿼리 개요를 제공합니다.
- 연결 상태로 분류된 활성 연결 분포
- 트랜잭션 상태 기반의 활성 트랜잭션 분포
- 쿼리 기간 분포
- 가장 오래 실행 중인 트랜잭션: 내림차순 실행 시간을 기준으로 상위 50개 실행 중인 쿼리(활성 상태)의 개요를 제공합니다. 테이블에서 활성 쿼리를 필터링하고 정렬할 수 있습니다.
정규화된 활성 쿼리 보기
쿼리 통계 대시보드에서 정규화된 활성 쿼리와 함께 오래 실행 중인 상위 트랜잭션 목록을 볼 수 있습니다. 정규화된 활성 쿼리는 민감한 정보를 삭제하고 다이제스트를 반환합니다. 다이제스트는 다음 예시에 사용된 여러 값 모두 동일합니다.
정규 쿼리
select * from test_table where id=1;
select * from test_table_where id=2;
다이제스트 또는 정규화된 쿼리
select * from test_table where id=?;
다른 세션에서 실행되는 쿼리는 대시보드에 다른 항목으로 표시됩니다.
가장 오래 실행 중인 트랜잭션 보기
쿼리 통계 대시보드의 가장 오래 실행 중인 트랜잭션 테이블에는 다음 열이 포함됩니다.
열 이름 | 설명 |
---|---|
프로세스 ID | 연결의 고유 식별자 |
쿼리 | SQL 쿼리 텍스트입니다. |
트랜잭션 상태 | 트랜잭션의 현재 실행 상태입니다. 허용되는 값은 RUNNING , LOCK WAIT , ROLLING BACK , COMMITTING 입니다. |
스레드 상태 | 스레드 상태(또는 쿼리 상태)는 활성 스레드의 현재 상태를 나타냅니다. |
트랜잭션 시작 시간 | 트랜잭션 실행이 시작된 타임스탬프입니다. |
트랜잭션 기간 | 현재 활성 트랜잭션의 시간(초)입니다. |
트랜잭션 대기 기간 | 현재 활성 트랜잭션의 대기 시간(초)입니다. |
스레드 상태 기간 | 쿼리에서 경과한 시간입니다. |
잠긴 트랜잭션 행 | 현재 활성 트랜잭션으로 잠긴 행 수입니다. |
수정된 트랜잭션 행 | 현재 활성 트랜잭션으로 수정된 행 수입니다. |
데이터베이스 | 이 연결이 실행되는 데이터베이스 이름입니다. |
사용자 이름 | 데이터베이스에 연결된 사용자의 이름입니다. |
클라이언트 주소 | 사용자가 데이터베이스에 연결하는 클라이언트의 IP 주소입니다. |
작업 | 트랜잭션을 종료하기 위한 링크가 포함됩니다. |
디스플레이가 60초마다 자동으로 새로고침됩니다.
연결 종료
쿼리 또는 트랜잭션을 종료하려면 databaseinsights.operationsAdmin
역할이 있어야 합니다. 자세한 내용은 IAM 기본 및 사전 정의된 역할 참조를 확인하세요.
쿼리 또는 트랜잭션을 종료하려면 다음 단계를 수행합니다.
- 가장 오래 실행 중인 트랜잭션 테이블에서 쿼리를 선택합니다.
- 작업 열에서 연결 종료를 클릭합니다.
- 연결 종료 창에서 확인을 클릭합니다.
백그라운드에서 종료 작업이 수행되는 동안 데이터베이스 요청이 즉시 반환됩니다.