66.3. 하위 거래#

하위 트랜잭션은 트랜잭션 내부에서 시작되므로 대규모 트랜잭션을 더 작은 단위로 나눌 수 있습니다. 하위 트랜잭션은 상위 트랜잭션에 영향을 주지 않고 커밋하거나 중단할 수 있으므로 상위 트랜잭션이 계속될 수 있습니다. 이를 통해 오류를 보다 쉽게 ​​처리할 수 있으며 이는 일반적인 애플리케이션 개발 패턴입니다. 하위 트랜잭션이라는 단어는 종종 다음과 같이 축약됩니다.subxact.

하위 트랜잭션은 다음을 사용하여 명시적으로 시작할 수 있습니다.세이브포인트명령이지만 PL/pgSQL과 같은 다른 방법으로 시작할 수도 있습니다.예외절. PL/Python 및 PL/Tcl은 명시적 하위 트랜잭션도 지원합니다. 하위 트랜잭션은 다른 하위 트랜잭션에서도 시작될 수 있습니다. 최상위 트랜잭션과 해당 하위 트랜잭션은 계층 구조 또는 트리를 형성하므로 기본 트랜잭션을 최상위 트랜잭션이라고 합니다.

하위 범퍼카 토토에 가상이 아닌 범퍼카 토토 ID가 할당된 경우 해당 범퍼카 토토 ID는 a서브시드. 읽기 전용 하위 범퍼카 토토에는 subxid가 할당되지 않지만 일단 쓰기를 시도하면 하나가 할당됩니다. 이는 또한 최상위 범퍼카 토토을 포함하여 subxid의 모든 상위 항목에 비가상 범퍼카 토토 ID가 할당되도록 합니다. 우리는 상위 xid가 항상 하위 subxid보다 낮은지 확인합니다.

각 하위 xid의 직계 상위 xid는 다음에 기록됩니다.pg_subtrans디렉토리. 최상위 xid에는 상위가 없으므로 항목이 작성되지 않으며 읽기 전용 하위 범퍼카 토토에 대한 항목도 작성되지 않습니다.

하위 범퍼카 토토이 커밋되면 subxid가 있는 모든 커밋된 하위 범퍼카 토토도 해당 범퍼카 토토에서 하위 커밋된 것으로 간주됩니다. 하위 범퍼카 토토이 중단되면 모든 하위 하위 범퍼카 토토도 중단된 것으로 간주됩니다.

xid가 있는 최상위 범퍼카 토토이 커밋되면 모든 하위 하위 범퍼카 토토도 커밋된 것으로 지속적으로 기록됩니다.pg_xact하위 디렉토리. 최상위 범퍼카 토토이 중단되면 하위 범퍼카 토토이 하위 커밋되었더라도 모든 하위 범퍼카 토토도 중단됩니다.

각 범퍼카 토토이 열린 상태로 유지되는 하위 범퍼카 토토이 많을수록(롤백 또는 해제되지 않음) 범퍼카 토토 관리 오버헤드가 커집니다. 각 백엔드의 공유 메모리에는 최대 64개의 열린 subxid가 캐시됩니다. 그 이후에는 subxid 항목의 추가 조회로 인해 스토리지 I/O 오버헤드가 크게 증가합니다.pg_subtrans.

수정사항 제출

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