2013-08-08 4 views
3

pg_dump를 실행하여 테이블을 SQL 파일로 덤프하는 경우 테이블의 마지막 행에 대한 스냅 샷을 찍고이 행까지 모든 행을 덤프합니까?삽입 쿼리가 실행 중일 때 pg_dump를 실행 중입니까?

또는 pg_dump 실행 후 삽입 된 행을 포함하여 모든 행을 계속 덤프합니까?

두 번째 질문은 다음과 같습니다. pg_dump를 실행하기 전에 모든 삽입 쿼리를 중지하는 것이 좋습니다.

답변

2

pg_dump를 실행할 때 테이블에서 공유 잠금을 얻습니다. 완료된 트랜잭션 이후에을 실행하면 덤프가 실행되지 않습니다. 따라서 덤프가 완료되면 커밋되지 않은 프로세스의에 현재 트랜잭션이있는 경우 덤프에 포함되지 않습니다. 이

--lock-대기 제한 시간 = 시간 제한 덤프의 시작 부분에 공유 테이블 잠금을 획득 영원히 기다리지 말라 말한다 그것을 실행할 수있는 다른 PARAM이 있습니다

. 지정된 시간 초과 내에 테이블을 잠글 수없는 경우 실패합니다. 타임 아웃은 SET statement_timeout이 허용하는 형식으로 지정할 수 있습니다. (허용되는 값은 덤프하는 서버 버전에 따라 다르지만 7.3 이후 모든 버전에서 허용되는 정수 (밀리 초)이 옵션은 7.3 이전 서버에서 덤프 할 때 무시됩니다.) **

+0

'pg_dump'가 시작되기 전에 트랜잭션이 시작되었고'pg_dump'가 시작된 후에 끝났습니다. – Sergey

+0

덤프가 시작되기 전에 트랜잭션이 완료되지 않았다면 포함되지 않습니다 – Scotch

+0

또는 pg_dump가 시작되면 트랜잭션이 시작되고 트랜잭션이 완료되고 pg_dump가 끝납니다. – Sergey

관련 문제