CloudWatch Database Insights에서 Amazon Aurora PostgreSQL에 대한 잠금 트리 분석
잠금으로 인한 성능 문제를 해결하기 위해 CloudWatch Database Insights에서 다음을 사용하여 Amazon Aurora PostgreSQL 데이터베이스의 잠금 트리를 분석할 수 있습니다.
슬라이스된 기준 드롭다운 - 데이터베이스 로드 차트에서 객체 차단, 세션 차단 또는 SQL 차단 차원을 선택하여 시간이 지남에 따라 고유한 상위 블로커가 DB 로드에 어떻게 기여하는지 확인합니다. DB 로드 차트를 사용하면 상위 블로커가 일정한지 아니면 자주 변경되는지 분석할 수 있습니다. 그런 후에 블로커 문제를 해결할 수 있습니다.
분석 잠금 탭 - DB 로드 분석을 선택한 다음에 분석 잠금 탭을 선택하여 데이터베이스의 잠금 경합에 대한 내용을 봅니다.
참고
CloudWatch Database Insights는 모든 Aurora PostgreSQL 버전에 대한 분석 잠금을 지원합니다. 잠금 트리를 분석하려면 Database Insights 고급 모드가 활성화되어 있어야 합니다. 고급 모드를 켜는 방법에 대한 내용은 Amazon Aurora용 Database Insights의 고급 모드 켜기와 Amazon Relational Database Service용 Database Insights의 고급 모드 켜기를 참조하세요.
잠금 분석 탭에서는 데이터베이스의 잠금 경합에 대한 정보를 제공합니다. 잠금 트리 시각화에서는 서로 다른 세션에서 잠금 요청 간 관계와 종속성을 보여줍니다.
Database Insights는 15초마다 스냅샷을 캡처합니다. 스냅샷은 특정 시점에 데이터베이스에 대한 잠금 데이터를 표시합니다.
참고
CloudWatch가 높은 잠금을 감지하면 CloudWatch에 분석 잠금 탭에 대한 높은 잠금 감지됨 배너가 표시됩니다. CloudWatch가 연속 15분 동안 15초 간격으로 잠금 스냅샷을 생성하는 경우 CloudWatch는 높은 잠금을 감지합니다.
트리의 각 노드는 특정 세션을 나타냅니다. 상위 노드는 하위 노드를 차단하는 세션입니다.
잠금 트리를 분석하려면 다음 절차를 사용합니다.
잠금 트리를 분석하는 방법
AWS Management Console에 로그인하고 https://console.aws.amazon.com/cloudwatch/
에서 CloudWatch 콘솔을 엽니다. 인사이트를 선택합니다.
Database Insights를 선택합니다.
데이터베이스 인스턴스 보기를 선택합니다.
DB 인스턴스를 선택합니다.
DB 로드 분석 탭을 선택하세요.
분석 잠금 탭을 선택합니다.
DB 인스턴스의 잠금 데이터를 보려면 1일 이하의 기간을 선택하세요.
스냅샷 기간을 선택하세요. 기본적으로 Database Insights는 세션이 가장 많이 차단된 스냅샷 기간을 선택합니다.
스냅샷의 잠금 데이터를 보려면 Database Insights가 스냅샷을 생성한 시간을 선택하세요.
잠금 트리를 확장하려면 세션 ID 옆의 화살표를 선택하세요.
잠금 스냅샷 데이터
Database Insights는 각 잠금 요청에 대해 다음 정보를 제공합니다. 기본적으로 활성화되지 않은 열을 보려면 트리 잠금 테이블의 설정 아이콘을 선택하고 다른 열을 활성화합니다.
열 이름 | 정의 | 기본 열 | Notes |
---|---|---|---|
|
고유한 세션 식별자. |
예 |
|
|
이 백엔드의 PID. |
예 |
|
|
이 잠금으로 차단된 세션 수. |
예 |
|
|
이 세션에서 실행한 마지막 쿼리. 블로커의 경우 차단 잠금을 보류하는 쿼리가 아닐 수 있습니다. |
예 |
|
|
백엔드가 현재 대기 중인 경우 대기 이벤트 이름. 그렇지 않은 경우 값은 NULL입니다. |
예 |
|
|
이 잠금이 시작된 이후 시간(초). |
예 |
|
|
차단 세션이 보류한 잠금 모드. |
아니요 |
|
|
대기 세션에서 요청한 잠금 모드. |
아니요 |
|
|
이 백엔드에 연결된 애플리케이션 이름. |
아니요 |
|
|
활성 트랜잭션이 없는 경우 차단 트랜잭션의 시작 시간 또는 null. |
아니요 |
|
|
대기 중인 사용자 세션이 이 잠금을 기다리기 시작한 시간 또는 잠금이 보류된 경우 null. |
아니요 |
|
|
사용자 세션이 시작된 시간. |
아니요 |
|
|
백엔드 상태. |
아니요 |
|
|
이 세션이 대기 중인 대기 이벤트 유형. |
아니요 |
|
|
마지막 쿼리가 시작된 시간. |
아니요 |
|
|
이 백엔드에 로그인한 사용자 이름. |
아니요 |
|
|
|
아니요 |
|
|
이 백엔드와의 통신에 클라이언트가 사용 중인 TCP 포트 번호 또는 Unix 소켓이 사용되는 경우 |
아니요 |
|
|
이 백엔드에 연결된 클라이언트의 IP 주소. 이 필드가 null이면 클라이언트가 서버 시스템에서 Unix 소켓을 통해 연결되었거나 autovacuum과 같은 내부 프로세스임을 나타냅니다. |
아니요 |
|
|
잠금이 보류된 경우 값은 true이고 잠금이 대기 중인 경우 false입니다. |
아니요 |
|
|
페이지 내 잠금이 대상으로 지정한 튜플 번호 또는 대상이 튜플이 아닌 경우 null. |
아니요 |
|
|
관계 내에서 잠금이 대상으로 지정한 페이지 번호 또는 대상이 관계 페이지나 튜플이 아닌 경우 null. |
아니요 |
|
|
잠금이 대상으로 지정한 트랜잭션의 ID 또는 대상이 트랜잭션 ID가 아닌 경우 null. |
아니요 |
|
|
잠금이 대상으로 지정한 관계의 OID 또는 대상이 관계나 관계의 일부가 아닌 경우 null. |
아니요 |
|
|
시스템 카탈로그 내 잠금 대상의 OID 또는 대상이 일반 데이터베이스 객체가 아닌 경우 null. |
아니요 |
|
|
잠금 대상이 있는 데이터베이스의 OID, 대상이 공유 객체인 경우 0 또는 대상이 트랜잭션 ID인 경우 null. |
아니요 |
|
|
잠금 테이블이 있는 데이터베이스의 이름. |
아니요 |
|
|
잠금 가능한 객체 유형: relation, extend, frozenid, page, tuple, transactionid, virtualxid, spectoken, object, userlock, advisory, or applytransaction. |
아니요 |
|
|
이 값은 빠른 경로로 잠금을 수행한 경우 true, 기본 잠금 테이블에서 잠금을 가져온 경우 false입니다. |
아니요 |
|
pg_stat_activity
및 pg_locks
보기의 값에 대한 자세한 내용은 PostgreSQL 설명서의 다음 주제를 참조하세요.