보기pg_locks액세스 제공 내부의 열린 트랜잭션이 보유한 잠금에 대한 정보 데이터베이스 서버. 참조메이저 토토 사이트 : 문서 : 8.2 : 동시성 제어용 토토 캔에 대해 더 자세히 논의합니다.
pg_locks당 하나의 행을 포함합니다. 활성 잠금 가능 개체, 요청된 잠금 모드 및 관련 거래. 따라서 동일한 잠글 수 있는 개체가 여러 번 나타날 수 있습니다. 여러 트랜잭션이 잠금을 보유하거나 대기 중인 경우 그것에. 그러나 현재 잠금이 설정되어 있지 않은 개체는 전혀 나타나지 않습니다.
잠글 수 있는 개체에는 여러 가지 유형이 있습니다. 전체 관계(예: 테이블), 관계의 개별 페이지, 관계, 트랜잭션 ID 및 일반의 개별 튜플 데이터베이스 개체(클래스 OID 및 개체 OID로 식별됨) 에서와 같은 방식으로pg_description또는pg_dependent). 또한 연장할 수 있는 권리도 관계는 별도의 잠글 수 있는 객체로 표시됩니다.
표 43-39.pg_locks열
| 이름 | 유형 | 참고자료 | 설명 |
|---|---|---|---|
| 자물쇠 유형 | 텍스트 | 잠금 가능한 객체의 유형:관계, 확장, 페이지, 튜플, 트랜잭션ID, 객체, 사용자 토토 캔, 또는권고 | |
| 데이터베이스 | oid | pg_database.oid | 객체가 존재하는 데이터베이스의 OID 또는 객체가 공유 객체인 경우 0, 공유 객체인 경우 NULL 개체는 거래 ID입니다. |
| 관계 | oid | pg_class.oid | 관계의 OID, 또는 객체가 아닌 경우 NULL 관계 또는 관계의 일부 |
| 페이지 | 정수 | 관계 내의 페이지 번호, 또는 다음의 경우 NULL 개체가 튜플이나 관계 페이지가 아닙니다. | |
| 튜플 | smallint | 페이지 내의 튜플 번호, 또는 객체인 경우 NULL 튜플이 아닙니다. | |
| 트랜잭션ID | xid | 트랜잭션의 ID, 또는 객체가 아닌 경우 NULL 거래 ID | |
| 고급 | oid | pg_class.oid | 객체를 포함하는 시스템 카탈로그의 OID, 또는 객체가 일반 데이터베이스 객체가 아닌 경우 NULL |
| 오브지드 | oid | 모든 OID 열 | 시스템 카탈로그 내 개체의 OID 또는 NULL 객체가 일반 데이터베이스 객체가 아닌 경우 |
| objsubid | smallint | 테이블 열의 경우 열 번호입니다(고급그리고오브지드테이블 자체를 참조하세요). 에 대한 다른 모든 객체 유형에서는 이 열이 0입니다. NULL인 경우 개체는 일반 데이터베이스 개체가 아닙니다. | |
| 거래 | xid | 보유 중이거나 대기 중인 거래의 ID 이 자물쇠 | |
| pid | 정수 | 보류 또는 대기 중인 서버 프로세스의 프로세스 ID 이 자물쇠. 준비된 사람이 잠금을 보유하는 경우 NULL입니다. 거래 | |
| 모드 | 텍스트 | 이 프로세스에 의해 유지되거나 원하는 잠금 모드의 이름 (참조섹션 12.3.1) | |
| 부여 | 부울 | 토토 캔이 유지되면 참, 토토 캔이 대기되면 거짓 |
부여연속적으로 true입니다. 표시된 트랜잭션이 보유한 잠금을 나타냅니다. 거짓 이 거래가 현재 획득을 기다리고 있음을 나타냅니다. 이 잠금은 다른 트랜잭션이 동일한 잠글 수 있는 개체에 대한 잠금 모드가 충돌합니다. 기다림 트랜잭션은 다른 잠금이 해제될 때까지(또는 교착상태가 감지됨). 단일 거래가 가능합니다. 한 번에 최대 하나의 잠금을 획득하기를 기다리고 있습니다.
모든 거래는 해당 거래에 대한 배타적 잠금을 보유합니다. 전체 기간 동안의 ID입니다. 하나의 거래가 필요하다고 판단하는 경우 구체적으로 다른 트랜잭션을 기다리려면 다음을 수행합니다. 다른 트랜잭션 ID에 대한 공유 잠금을 획득하려고 시도합니다. 이는 다른 트랜잭션이 종료된 경우에만 성공하고 잠금을 해제합니다.
튜플은 잠글 수 있는 객체 유형이지만 정보는 행 수준 잠금 정보는 메모리가 아닌 디스크에 저장됩니다. 따라서 행 수준 잠금은 일반적으로 이 보기에 표시되지 않습니다. 만약에 트랜잭션이 행 수준 잠금을 기다리고 있는 경우 일반적으로 트랜잭션 ID를 기다리는 것으로 뷰에 나타납니다. 해당 행 잠금의 현재 보유자입니다.
보조 잠금은 다음 중 하나로 구성된 키에 대해 획득할 수 있습니다. 싱글비긴트값 또는 두 개의 정수 값. 갑비긴트키는 해당 키와 함께 표시됩니다. 의 고차 절반고급열, 그 하위 절반은오브지드열 및objsubid1과 같습니다. 정수 키는 의 첫 번째 키와 함께 표시됩니다.고급열, 두 번째 키오브지드열 및objsubid2와 같습니다. 실제 의미는 키는 사용자에게 달려 있습니다. 권고 잠금은 각각에 대해 로컬입니다. 데이터베이스이므로데이터베이스열은 권고 잠금에 의미가 있습니다.
때pg_locks보기는 액세스되면 내부 잠금 관리자 데이터 구조가 일시적으로 잠기며 뷰를 표시하기 위한 복사본이 만들어집니다. 이렇게 하면 뷰가 일관된 결과 집합을 생성할 수 있습니다. 다음보다 오랫동안 일반 잠금 관리자 작업을 차단하지 않는 동안 필요합니다. 그럼에도 불구하고 데이터베이스에 약간의 영향이 있을 수 있습니다. 이 뷰에 자주 액세스하는 경우 성능이 향상됩니다.
pg_locks글로벌 보기를 제공합니다. 관련된 잠금뿐만 아니라 데이터베이스 클러스터의 모든 잠금 현재 데이터베이스. 비록관계열을 조인할 수 있음pg_class.oid잠긴 관계를 식별하기 위해 이는 현재 데이터베이스의 관계에 대해서만 올바르게 작동합니다(해당 이에 대한데이터베이스열은 현재 데이터베이스의 OID 또는 0).
통계 수집기를 활성화한 경우,pid열은 다음에 조인될 수 있습니다.procpid열pg_stat_activity자세한 정보를 보려면 보기를 참조하세요. 잠금을 보유하거나 보유하기를 기다리는 세션에서. 또한 만약 당신이 준비된 트랜잭션을 사용하고 있습니다.거래열은 다음에 조인될 수 있습니다.거래열pg_prepared_xacts자세한 정보를 보려면 보기를 참조하세요. 잠금을 보유한 준비된 트랜잭션에 대해. (준비된 거래 잠금을 기다릴 수는 없지만 계속해서 잠금을 유지합니다. 실행하는 동안 획득한 잠금 장치입니다.)