데이터베이스 활동을 모니터링하는 또 다른 유용한 도구는입니다.pg_locks시스템 카탈로그. 이것은 허용합니다 데이터베이스 관리자는 미결제에 대한 정보를 볼 수 있습니다 잠금 관리자의 잠금. 예를 들어,이 기능은 될 수 있습니다 사용 :
현재 미결제에서 모든 자물쇠를보고 모든 잠금 장치 특정 데이터베이스의 관계, 모든 잠금 장치 특정 관계 또는 특정 자물쇠가 보유한 모든 자물쇠토토 결과세션.
현재 데이터베이스의 관계보기를 가장 많이 위임되지 않은 자물쇠 (이는 경합의 원천 일 수 있습니다. 데이터베이스 클라이언트).
전반적인 잠금 경합의 효과를 결정하십시오 데이터베이스 성능뿐만 아니라 그 정도 경합은 전체 데이터베이스 트래픽에 따라 다릅니다.
잠금 및 동시성 관리에 대한 자세한 내용은토토 결과, 참조윈 토토 : 문서 : 7.3 : 윈 토토.
참고 :언제pg_locks내부 잠금 관리자 데이터 구조 인보기에 액세스됩니다 순간적으로 잠겨 있으며 표시하다. 이를 통해보기가 일관된 세트를 생성합니다 결과적으로 일반적인 잠금 관리자 작업을 차단하지는 않지만 필요 이상. 그럼에도 불구하고 약간의 영향이있을 수 있습니다 이보기가 자주 검사되는 경우 데이터베이스 성능에.
테이블 10-3의 정의를 보여줍니다PG_LOCKS열. 그만큼PG_LOCKS보기에는 잠글 수있는 객체 당 한 행이 포함되어 있습니다 그리고 요청 된 잠금 모드. 따라서 동일한 잠금 식 물체가 가능합니다 여러 번의 트랜잭션이 보유 된 경우 여러 번 나타납니다 그것에 자물쇠를 기다리고 있습니다. 잠금 가능한 물체는 관계입니다 또는 거래 ID. (이 견해에는 만 포함됩니다 줄 수준이 아닌 테이블 레벨 잠금. 거래가있는 경우 로우 레벨 잠금을 기다리는 것은 다음과 같이 뷰에 나타납니다. 해당 행의 현재 소지자의 거래 ID를 기다리고 있습니다. 잠그다.)
표 10-3. 상태 시스템보기 잠금
열 이름 | 타입 | 설명 |
---|---|---|
관계 | OID | 잠긴 관계의 OID 또는 잠글 수있는 객체는 트랜잭션 ID입니다. 이 칼럼은 될 수 있습니다 와 합류pg_class시스템 잠긴 관계에 대한 자세한 정보를 얻기위한 카탈로그. 그러나 이것은 관계에만 효과가 있습니다. 현재 데이터베이스 (데이터베이스열은 전류입니다 데이터베이스의 OID 또는 0). |
데이터베이스 | OID | 잠긴 관계가있는 데이터베이스의 OID 잠금 식 객체가 트랜잭션 인 경우 존재하거나 널 ID. 자물쇠가 전 세계 공유 테이블에있는 경우이 필드 0이됩니다. 이 열은와 결합 할 수 있습니다.pg_database시스템 카탈로그로 잠긴 객체에 대한 자세한 정보를 얻으십시오 데이터 베이스. |
거래 | xid | 트랜잭션의 ID 또는 잠금 장치 인 경우 NULL 객체는 관계입니다. 모든 거래는 다음과 같습니다 전체의 트랜잭션 ID에 대한 독점 잠금 지속. 하나의 트랜잭션에서 기다릴 필요가있는 경우 특히 다른 거래를 위해서는 그렇게합니다 다른 거래에서 공유 잠금을 취득하려는 시도 ID. 그것은 다른 거래 일 때만 성공할 것입니다 자물쇠를 종료하고 릴리스합니다. |
PID | Integer | 의 프로세스 ID토토 결과백엔드에 속합니다 취득하거나 취득하려는 세션 잠그다. 통계 수집가를 활성화 한 경우 열과 결합 할 수 있습니다pg_stat_activity더 많은 것을 얻으려면 백엔드 보유 또는 보유 대기 대기에 대한 정보 잠그다. |
모드 | 텍스트 | 요청 또는 고정 잠금 모드 잠긴 물체. 다른 것에 대한 자세한 내용은 사용 가능한 잠금 모드토토 결과, 참조윈 토토 : 문서 : 7.3 : 윈 토토 7.3.21 사용자. |
isgranted | 부울 | 이 자물쇠가 부여 된 경우 (이것에 의해 보류됩니다. 세션). 거짓은이 세션이 현재임을 나타냅니다 이 자물쇠를 얻기 위해 기다리고 있습니다. 이는 일부를 의미합니다 다른 세션은 충돌 잠금 모드를 보유하고 있습니다. 동일한 잠금 가능 객체. 이 백엔드는 다른 자물쇠가 방출됩니다 (또는 교착 상태 상황은 상황입니다 감지). 단일 백엔드는 AT를 기다릴 수 있습니다 한 번에 대부분의 자물쇠. |