51.73. pg_locks

보기pg_locks데이터베이스 서버 내의 활성 프로세스가 보유한 잠금에 대한 정보에 대한 액세스를 제공합니다. 참조PostgreSQL : 문서 : 13 : 13 장. 스포츠 토토 베트맨 제어사설 토토 사이트에 대한 자세한 내용은.

pg_locks활성 잠금 가능 객체, 요청된 잠금 모드 및 관련 프로세스당 하나의 행을 포함합니다. 따라서 여러 프로세스가 해당 개체에 대한 잠금을 보유하거나 기다리는 경우 동일한 잠금 가능 개체가 여러 번 나타날 수 있습니다. 그러나 현재 잠금이 설정되어 있지 않은 개체는 전혀 표시되지 않습니다.

사설 토토 사이트 가능한 개체에는 여러 가지 고유한 유형이 있습니다: 전체 관계(예: 테이블), 관계의 개별 페이지, 관계의 개별 튜플, 트랜잭션 ID(가상 및 영구 ID 모두), 일반 데이터베이스 개체(에서와 같은 방식으로 클래스 OID 및 개체 OID로 식별됨pg_description또는pg_dependent). 또한 관계 확장 권한은 업데이트 권한과 마찬가지로 별도의 잠글 수 있는 개체로 표시됩니다.pg_database.datfrozenxid. 또한,권고사용자 정의 의미가 있는 숫자에 사설 토토 사이트을 설정할 수 있습니다.

표 51.74. pg_locks

열 유형

설명

자물쇠 유형 텍스트

사설 토토 사이트 가능한 개체의 유형:관계, 확장, 냉동상태, 페이지, 튜플, 트랜잭션ID, virtualxid, 스펙토큰, 객체, 사용자 사설 토토 사이트또는권고. (또한 참조표 27.11.)

데이터베이스 oid(참조pg_database.oid)

잠금 대상이 존재하는 데이터베이스의 OID, 대상이 공유 객체인 경우 0, 대상이 트랜잭션 ID인 경우 null

관계 oid(참조pg_class.oid)

잠금 대상 관계의 OID, 대상이 관계 또는 관계의 일부가 아닌 경우 null

페이지 int4

관계 내의 잠금 대상 페이지 번호 또는 대상이 관계 페이지 또는 튜플이 아닌 경우 null

튜플 int2

페이지 내 잠금의 대상이 되는 튜플 번호 또는 대상이 튜플이 아닌 경우 null

virtualxid 텍스트

잠금 대상 트랜잭션의 가상 ID 또는 대상이 가상 트랜잭션 ID가 아닌 경우 null

트랜잭션ID xid

사설 토토 사이트 대상 트랜잭션의 ID, 대상이 트랜잭션 ID가 아닌 경우 null

고급 oid(참고자료pg_class.oid)

잠금 대상을 포함하는 시스템 카탈로그의 OID, 또는 대상이 일반 데이터베이스 개체가 아닌 경우 null

오브지드 oid(모든 OID 열 참조)

시스템 카탈로그 내 잠금 대상의 OID, 또는 대상이 일반 데이터베이스 객체가 아닌 경우 null

objsubid int2

사설 토토 사이트 대상 열 번호(고급그리고오브지드테이블 자체 참조), 대상이 다른 일반 데이터베이스 개체인 경우 0, 대상이 일반 데이터베이스 개체가 아닌 경우 null

가상 거래 텍스트

이 사설 토토 사이트을 보유하거나 기다리는 트랜잭션의 가상 ID

pid int4

이 잠금을 보유하거나 기다리는 서버 프로세스의 프로세스 ID, 또는 준비된 트랜잭션에 의해 잠금이 보유된 경우 null

모드 텍스트

이 프로세스에서 유지하거나 원하는 잠금 모드의 이름(참조섹션 13.3.1그리고섹션 13.2.3)

부여 부울

사설 토토 사이트이 유지되면 참, 사설 토토 사이트이 대기되면 거짓

빠른 경로 부울

빠른 경로를 통해 잠금이 수행된 경우 참, 기본 잠금 테이블을 통해 수행된 경우 거짓


부여은 표시된 프로세스에 의해 보유된 잠금을 나타내는 행에서 true입니다. False는 이 프로세스가 현재 이 잠금을 획득하기 위해 대기 중임을 나타냅니다. 이는 하나 이상의 다른 프로세스가 동일한 잠금 가능 객체에 대해 충돌하는 잠금 모드를 보유하거나 기다리고 있음을 의미합니다. 대기 프로세스는 다른 잠금이 해제될 때까지(또는 교착 상태가 감지될 때까지) 휴면 상태입니다. 단일 프로세스는 한 번에 최대 하나의 잠금을 획득하기 위해 대기할 수 있습니다.

트랜잭션을 실행하는 동안 서버 프로세스는 트랜잭션의 가상 트랜잭션 ID에 대한 배타적 잠금을 유지합니다. 영구 ID가 트랜잭션에 할당되면(일반적으로 트랜잭션이 데이터베이스 상태를 변경하는 경우에만 발생함) 종료될 때까지 트랜잭션의 영구 트랜잭션 ID에 대한 배타적 잠금도 유지합니다. 프로세스가 다른 트랜잭션이 끝날 때까지 특별히 기다려야 한다고 판단하면 다른 트랜잭션의 ID(상황에 따라 가상 또는 영구 ID)에 대한 공유 잠금을 획득하려고 시도하여 이를 수행합니다. 이는 다른 트랜잭션이 종료되고 잠금이 해제될 때만 성공합니다.

튜플은 잠글 수 있는 객체 유형이지만 행 수준 잠금에 대한 정보는 메모리가 아닌 디스크에 저장되므로 행 수준 잠금은 일반적으로 이 보기에 표시되지 않습니다. 프로세스가 행 수준 잠금을 기다리고 있는 경우 일반적으로 해당 행 잠금의 현재 보유자의 영구 트랜잭션 ID를 기다리는 것으로 뷰에 표시됩니다.

보조 사설 토토 사이트은 단일 키로 구성된 키에 대해 획득할 수 있습니다.bigint값 또는 두 개의 정수 값. 갑비긴트키는 상위 절반과 함께 표시됩니다.고급열, 그 하위 절반은오브지드열 및objsubid1. 원본과 동일비긴트값은 표현식으로 재조립될 수 있습니다.(classid::bigint << 32) | 개체 ID::bigint. 정수 키는의 첫 번째 키와 함께 표시됩니다.고급열, 두 번째 키오브지드열 및objsubid같음 2. 키의 실제 의미는 사용자에게 달려 있습니다. 권고 잠금은 각 데이터베이스에 대해 로컬이므로데이터베이스열은 권고 잠금에 의미가 있습니다.

pg_locks현재 데이터베이스와 관련된 잠금뿐만 아니라 데이터베이스 클러스터의 모든 잠금에 대한 전역 보기를 제공합니다. 비록관계열을 조인할 수 있습니다.pg_class.oid잠긴 관계를 식별하기 위해 이는 현재 데이터베이스의 관계에 대해서만 올바르게 작동합니다(다음에 대한데이터베이스열은 현재 데이터베이스의 OID 또는 0입니다.

pid열은에 조인될 수 있습니다.pidpg_stat_activity예를 들어 각 잠금을 보유하거나 기다리는 세션에 대한 자세한 정보를 보려면 보기

SELECT * FROM pg_locks pl 왼쪽 조인 pg_stat_activity psa
    ON pl.pid = psa.pid;

또한 준비된 트랜잭션을 사용하는 경우,가상 거래열은 다음에 조인될 수 있습니다.거래pg_prepared_xacts잠금을 보유하는 준비된 트랜잭션에 대한 자세한 정보를 보려면 보기를 클릭하세요. (준비된 트랜잭션은 잠금을 기다릴 수 없지만 실행 중에 획득한 잠금을 계속 유지합니다.) 예:

SELECT * FROM pg_locks pl 왼쪽 조인 pg_prepared_xacts ppx
    ON pl.virtualtransaction = '-1/' || ppx.transaction;

어떤 프로세스가 어떤 다른 프로세스를 차단하는지에 대한 정보를 얻을 수 있지만pg_locks자체적으로는 이 부분을 자세히 파악하기가 매우 어렵습니다. 이러한 쿼리는 어떤 잠금 모드가 다른 잠금 모드와 충돌하는지에 대한 지식을 인코딩해야 합니다. 더 나쁜 것은pg_locksview는 잠금 대기 대기열에서 어떤 프로세스가 다른 프로세스보다 앞서 있는지에 대한 정보나 어떤 프로세스가 다른 클라이언트 세션을 대신하여 실행되는 병렬 작업자인지에 대한 정보를 노출하지 않습니다. 를 사용하는 것이 더 좋습니다.pg_blocking_pids()함수(참조표 9.63) 대기 프로세스가 뒤에 차단된 프로세스를 식별합니다.

pg_locksview는 별도의 시스템인 일반 사설 토토 사이트 관리자와 조건자 사설 토토 사이트 관리자의 데이터를 표시합니다. 또한 일반 사설 토토 사이트 관리자는 사설 토토 사이트을 일반 사설 토토 사이트과빠른 경로잠금. 이 데이터는 완전한 일관성을 보장하지 않습니다. 뷰가 쿼리되면 빠른 경로 잠금에 대한 데이터(빠른 경로 = 사실)는 전체 잠금 관리자의 상태를 동결하지 않고 각 백엔드에서 한 번에 하나씩 수집되므로 정보가 수집되는 동안 잠금을 가져오거나 해제할 수 있습니다. 그러나 이러한 잠금은 현재 사용 중인 다른 잠금과 충돌하지 않는 것으로 알려져 있습니다. 빠른 경로 잠금에 대해 모든 백엔드를 쿼리한 후 일반 잠금 관리자의 나머지 부분은 하나의 단위로 잠기고 나머지 모든 잠금의 일관된 스냅샷은 원자성 작업으로 수집됩니다. 일반 잠금 관리자를 잠금 해제한 후 조건자 잠금 관리자도 비슷하게 잠기고 모든 조건자 잠금은 원자성 작업으로 수집됩니다. 따라서 빠른 경로 잠금을 제외하고 각 잠금 관리자는 일관된 결과 집합을 제공하지만 두 잠금 관리자를 동시에 잠그지 않으므로 일반 잠금 관리자를 조사한 후 조건자 잠금 관리자를 조사하기 전에 잠금을 가져오거나 해제할 수 있습니다.

일반 및/또는 조건자 잠금 관리자를 잠그면 이 보기에 매우 자주 액세스하는 경우 데이터베이스 성능에 약간의 영향을 미칠 수 있습니다. 잠금은 잠금 관리자로부터 데이터를 얻는 데 필요한 최소 시간 동안만 유지되지만 이것이 성능에 영향을 미칠 가능성을 완전히 제거하지는 않습니다.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.