답변:
일반적으로 테이블을 복제하는 가장 빠른 방법은 다음과 같습니다.
CREATE TABLE table2 AS SELECT * FROM table1;
병렬 INSERT는 더 빠를 수 있지만 데이터가 많은 드라이브에 인터리브 될 때 매우 빠른 디스크 하위 시스템에서만 가능합니다. 그렇지 않으면이 속도가 느려집니다.
수정을 마치면 다음과 table2
같이 새 이름을 사용할 수 있습니다.
BEGIN;
DROP TABLE table1;
ALTER TABLE table2 RENAME TO table1;
COMMIT;
이 DROP TABLE
명령에는 독점 잠금이 필요하며 이는 예상 한 방식으로 동시 판독기에 영향을줍니다.
DROP
다른 트랜잭션의 테이블에서 보류중인 읽기가 완료 될 때까지 기다립니다.table1
더 이상 존재하지 않으므로 실패 합니다. 오류의 모습 "수 OID와 열지 관계 OID "두 번째 문제를 피하기 위해 삭제하지 말고 이름 table1
을 바꾼 old_table1
다음 독자들과 함께 할 때 나중에 트랜잭션 외부로 떨어 뜨릴 수 있습니다. 따라서 위의 순서는 다음과 같습니다.
BEGIN;
ALTER TABLE table1 RENAME TO old_table1;
ALTER TABLE table2 RENAME TO table1;
COMMIT;
...
DROP TABLE old_table1;