| 포스트그레SQL 8.1.23 문서 | ||||
|---|---|---|---|---|
| 이전 | 빠르게 뒤로 | Fast Forward | 다음 | |
PREPARE TRANSACTIONprepares the current transaction for two-phase commit. 이 명령 후에는 트랜잭션이 더 이상 현재 세션과 연결되지 않습니다. 대신 해당 상태는 디스크에 완전히 저장되며 매우 성공적으로 커밋될 가능성이 높습니다. 커밋이 요청되기 전에 데이터베이스 충돌이 발생합니다.
일단 사설 토토되면 나중에 트랜잭션을 커밋하거나 롤링할 수 있습니다. 다시COMMIT PREPARED또는롤백 사설 토토됨입니다. 그 명령 실행된 세션뿐만 아니라 모든 세션에서 발행될 수 있습니다. 원래 거래.
발행 세션의 관점에서,PREPARE TRANSACTIONa와 다르지 않습니다ROLLBACK명령: 실행한 후에는 아무 것도 없습니다. 활성 현재 거래 및 사설 토토된 효과 거래가 더 이상 표시되지 않습니다. (효과는 다음과 같습니다. 트랜잭션이 커밋되면 다시 표시됩니다.)
만약에거래 사설 토토명령 어떤 이유로든 실패하면 다음과 같이 됩니다.롤백: 현재 거래가 취소되었습니다.
나중에 이것을 식별하는 임의의 식별자 거래COMMIT PREPARED또는ROLLBACK PREPARED. The identifier 문자열 리터럴로 작성해야 하며 다음보다 작아야 합니다. 길이는 200바이트입니다. It must not be the same as the identifier used for any currently prepared transaction.
이 명령은 트랜잭션 블록 내에서 사용해야 합니다. 사용BEGINto start one.
현재는 허용되지 않습니다.사설 토토a transaction that has executed any 임시 테이블과 관련된 작업, 커서 생성보류 있음, or executedLISTEN또는듣지 않음. 그 기능이 현재 세션과 너무 밀접하게 연결되어 유용하지 않음 사설 토토할 거래에서.
트랜잭션이 런타임 매개변수를 다음으로 수정한 경우SET, those effects persist afterPREPARE TRANSACTION, and will not be 나중에 영향을 받음COMMIT PREPARED또는롤백 사설 토토됨. Thus, in this one respectPREPARE TRANSACTION더 많은 행위 좋아요COMMIT보다롤백.
현재 사용 가능한 모든 사설 토토된 거래는 다음에 나열되어 있습니다.pg_prepared_xactssystem 보기.
성능의 관점에서 볼 때 떠나는 것은 현명하지 않습니다. 오랫동안 사설 토토된 상태의 트랜잭션: 이는 instance interfere with the ability of진공저장소를 회수합니다. 그것도 명심하세요 트랜잭션은 보유한 잠금을 계속 유지합니다. 는 이 기능의 의도된 용도는 사설 토토된 트랜잭션이 일반적으로 외부 요청이 발생하는 즉시 커밋되거나 롤백됩니다. 트랜잭션 관리자는 다른 데이터베이스도 확인했습니다. 커밋할 사설 토토가 되었습니다.
만약 당신이 사설 토토된 거래를 진지하게 활용한다면, 당신은 아마도 가치를 높이고 싶을 것입니다.max_prepared_transactions, 기본 설정은 매우 작기 때문에(리소스 낭비를 피하기 위해) for those who don't use it). It is recommendable to make it at 최소 같음max_connections, 모든 세션이 사설 토토된 트랜잭션을 가질 수 있도록 보류 중입니다.