이 페이지에서는 데이터베이스에서 활성 상태로 있는 쿼리를 모니터링하고 문제 해결하는 방법을 설명합니다. 이러한 쿼리를 모니터링하면 시스템 지연 시간 및 높은 CPU 사용량에 대한 원인을 파악하는 데 도움이 될 수 있습니다.
쿼리 통계 대시보드에서 연관된 쿼리 및 통계와 함께 활성 트랜잭션 요약 및 트랜잭션 목록을 볼 수 있습니다. 트랜잭션은 트랜잭션 시작 시간으로 표시됩니다. 실행 중인 쿼리 수가 많으면 총 쿼리 중 일부만 결과가 표시될 수 있습니다.
시작하기 전에
활성 쿼리를 보려면 다음을 수행해야 합니다.
- 데이터베이스의 Gemini를 설정합니다.
- 맞춤 역할을 만들고 다음 권한을 추가합니다.
할 일 목록 역할 권한 추천 보기 databaseinsights.viewer
databaseinsights.activeQueries.fetch
databaseinsights.activitySummary.fetch
권장사항 종료 databaseinsights.operationsAdmin
해당 사항 없음
활성 쿼리 보기
활성 쿼리를 보려면 다음을 수행합니다.
활성 쿼리를 보려는 각 사용자에 대해 이 역할을 추가합니다.
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 | 연결 또는 스레드 ID의 고유 식별자입니다. |
쿼리 | SQL 쿼리 텍스트입니다. |
상태 | 연결의 상태입니다. |
세션 시간 | 실행 중인 마지막 세션의 기간입니다. |
트랜잭션 기간 | 실행 중인 활성 트랜잭션의 기간입니다. |
쿼리 기간 | 해당 트랜잭션에서 실행 중인 마지막 쿼리의 기간입니다. |
대기 이벤트 유형 | 발생한 대기 이벤트의 대기 이벤트 유형입니다. |
대기 이벤트 | 발생 중인 대기 이벤트입니다. |
데이터베이스 | 이 연결이 실행되는 데이터베이스 이름입니다. |
애플리케이션 이름 | 이 연결이 실행되는 애플리케이션 이름입니다. |
사용자 이름 | 데이터베이스에 연결된 사용자의 이름입니다. |
클라이언트 주소 | 쿼리를 보낸 클라이언트의 특정 IP 주소입니다. |
작업 | 트랜잭션을 종료하기 위한 링크가 포함됩니다. |
디스플레이가 60초마다 자동으로 새로고침됩니다.
프로세스 종료
쿼리 또는 트랜잭션을 종료하려면 databaseinsights.operationsAdmin
역할이 있어야 합니다. 자세한 내용은 IAM 기본 및 사전 정의된 역할 참조를 확인하세요.
쿼리 또는 트랜잭션을 종료하려면 다음 단계를 수행합니다.
- 가장 오래 실행 중인 트랜잭션 테이블에서 쿼리를 선택합니다.
- 작업 열에서 연결 종료를 클릭합니다.
- 연결 종료 창에서 확인을 클릭합니다.
시스템에서 쿼리 또는 트랜잭션 종료가 성공하면 성공 메시지가 나타납니다. 또한 필요한 경우 시스템에서 롤백이 수행됩니다.