처음있을 때 많은 양의 데이터를 삽입해야 할 수도 있습니다. 데이터베이스를 채우고 있습니다. 이 섹션에는 몇 가지 제안이 포함되어 있습니다 이 프로세스를 가능한 한 효율적으로 만드는 방법.
다중 토토 베이시삽입s, 회전 Autocommit에서 벗어나 마지막에 커밋을 수행하십시오. (평범한 SQL, 이것은 발행을 의미합니다시작at 시작 및커밋끝에. 일부 클라이언트 라이브러리는 등 뒤에서이 작업을 수행 할 수 있습니다. 원할 때 라이브러리가 수행해야합니다. 완료.) 각 삽입이 별도로 커밋되면PostgreSQL많은 일을하고 있습니다 추가 된 각 행에 대해 작동합니다. 추가 혜택 한 번의 트랜잭션의 모든 삽입은 한 줄은 실패한 다음 모든 행의 삽입이 삽입되었습니다. 그 시점까지 롤백 될 것이므로 갇히지 않을 것입니다. 부분적으로로드 된 데이터.
usePostgreSQL : 문서 : 8.4 : 토토 사이트 추천모두로드하려면 일련의를 토토 베이하는 대신 한 명령의 행삽입명령. 그만큼COPY명령은 크게로드하기 위해 최적화되었습니다 행의 수; 보다 유연하지 않습니다.삽입이지만 오버 헤드가 상당히 덜 발생합니다 큰 데이터로드. 부터copyis 단일 명령, 당신이 가면 자동 커밋을 비활성화 할 필요가 없습니다. 이 방법을 사용하여 테이블을 채우십시오.
토토 베이할 수없는 경우copy토토 베이 도움말PostgreSQL : 문서 : 8.4 : 스포츠 토토 베트맨준비된 생성삽입성명서, 그리고 토토 베이execute여러 번 필수의. 이것은 반복적으로 오버 헤드를 피합니다 구문 분석 및 계획삽입. 다른 인터페이스는이 시설을 다양한 방식으로 제공합니다. 찾아보기"준비된 진술"인터페이스 문서.
많은 수의 행을 토토 베이하여COPY사용하는 것보다 거의 항상 빠릅니다삽입준비가 사용되고 여러 삽입이 있습니다 단일 거래로 배치되었습니다.
COPY내에서 사용하면 가장 빠릅니다 이전과 동일한 거래생성 테이블또는Truncate명령. ~ 안에 그러한 경우 WAL이 작성할 필요는 없습니다. 오류, 새로로드 된 데이터가 포함 된 파일은 다음과 같습니다. 어쨌든 제거되었습니다. 그러나이 고려 사항은에 적용되지 않습니다.archive_modeis 이 경우 모든 명령이 WAL을 작성해야하므로
새로 생성 된 테이블을로드하는 경우 가장 빠릅니다. 메소드는 테이블을 작성하고 대량으로로드하여 테이블의 데이터를 토토 베이하여copy그런 다음 필요한 색인을 만듭니다 테이블 용. 기존 데이터에 대한 인덱스 생성은 다음과 같습니다 각 행처럼 점진적으로 업데이트하는 것보다 빠릅니다 짐을 실은.
기존에 많은 양의 데이터를 추가하는 경우 테이블, 인덱스를 떨어 뜨리고 테이블을로드하는 것은 승리 일 수 있습니다. 그런 다음 색인을 재현하십시오. 물론 데이터베이스 성능 다른 사용자는 인덱스가있는 동안 고통을 겪을 수 있습니다. 없어진. 독특한 것을 떨어 뜨리기 전에 두 번 생각해야합니다 고유 한 오류 검사 이후 인덱스 인덱스가 누락 된 상태에서 제약이 손실됩니다.
인덱스와 마찬가지로 외국의 주요 제약 조건은 다음과 같습니다. 점검"대량"보다 효율적으로 줄보다. 따라서 외국 키를 떨어 뜨리는 것이 유용 할 수 있습니다 제약,로드 데이터 및 제약 조건을 다시 창출합니다. 다시, 데이터로드 속도와 오류 손실 사이에 상충 관계가 있습니다. 제약 조건이 누락 된 상태에서 확인합니다.
일시적으로 증가하는Maintenance_Work_mem구성 변수 다량의 데이터를로드 할 때 성능 향상으로 이어집니다. 이것은 속도를 높이는 데 도움이 될 것입니다색인 생성명령 및Alter Table Add Foreign Key명령. 그렇지 않습니다 에 대해 많은 일을하십시오COPY자체 조언은 하나 또는 둘 다를 사용할 때만 유용합니다. 위의 기술.
일시적으로 증가하는Checkpoint_segments구성 변수는 큰 데이터로드를 더 빨리 만들 수 있습니다. 많은 양의 데이터를로드하기 때문입니다PostgreSQL원인이 될 것입니다 체크 포인트는 일반 체크 포인트보다 더 자주 발생합니다 주파수 (에 의해 지정됨Checkpoint_Timeout구성 변수). 체크 포인트가 발생할 때마다 모든 더러운 페이지를 플러시해야합니다. 디스크에. 증가함으로써Checkpoint_segments일시적으로 벌크 데이터 중 하중, 필요한 체크 포인트 수는 줄인.
많은 양의 데이터를 설치에로드 할 때 WAL 아카이빙을 토토 베이하면 아카이브를 비활성화 할 수 있습니다 (Turn ~archive_mode구성 변수)로드하는 동안. 더 빠를 수도 있습니다 로드가 완료된 후 새로운베이스 백업을 수행합니다. 많은 양의 증분 월 데이터를 처리하십시오. 그러나 그 점에 유의하십시오 선회archive_modeON 또는 OFF 서버 재시작이 필요합니다.
아카이버가 처리 할 시간을 피하는 것 외에
WAL 데이터,이 작업을 수행하면 실제로 특정 명령이 나옵니다
더 빨리, 그들은 WAL을 전혀 쓰지 않도록 설계 되었기 때문에archive_mode꺼져 있습니다. (그들은 할 수 있습니다
충돌 안전을 더 저렴하게 보장합니다fsync
WAL을 작성하는 것보다 끝에서.) 이것
다음 명령에 적용됩니다.
테이블을 선택하여
색인 생성(및 변형 처럼Alter Table 추가 기본 열쇠)
ALTER 테이블 세트 테이블 스페이스
클러스터
COPY From, 대상 일 때 테이블이 동일하게 일찍 생성되거나 잘 렸습니다. 거래
분포를 크게 변경할 때마다 테이블 내 데이터, 실행분석강력하게 권장됩니다. 이것 대량의 데이터가 많은 양의 데이터를 테이블에 포함시킵니다. 달리기분석(또는진공 분석)는 플래너에 보장합니다 표에 대한 최신 통계. 통계가 없거나 구식 통계에 따르면 플래너는 잘못된 결정을 내릴 수 있습니다 쿼리 계획 중에는 성능 저하로 이어집니다 부정확하거나 존재하지 않는 통계가있는 테이블. IF에 유의하십시오 autovacuum 데몬이 활성화되고 실행될 수 있습니다분석자동으로; 보다플래너 업데이트 통계andAutovacuum 데몬자세한 내용은
덤프 스크립트에 의해 생성pg_dump자동으로 몇 가지를 적용하지만 위의 지침 중 하나는 아닙니다. a를 새로 고침하려면pg_dump가능한 빨리 덤프하십시오 수동으로 몇 가지 추가 작업을 수행해야합니다. (이 점들을 참조하십시오 적용 중복원덤프, 덤프가 아닙니다생성IT. 같은 점 토토 베이시 적용PG_RESTOREto A에서로드pg_dump아카이브 파일.)
기본적으로pg_dump용도copy, 그리고 그것이 생성 될 때 a 스키마 및 데이터 덤프 완전한 데이터를로드하는 것이 신중합니다 인덱스와 외국 키를 만들기 전에. 이 경우 여러 지침이 자동으로 처리됩니다. 남은 것 당신은 다음과 같습니다.
적절한 설정 (정상보다 큰) 값maintenance_work_mem및Checkpoint_segments.
WAL 아카이브를 사용하는 경우 비활성화하는 동안이를 비활성화하는 것을 고려하십시오 복원하다. 그렇게하려면 끄기archive_mode덤프 스크립트를로드하기 전에 그리고 나중에 다시 켜고 신선한 기지를 가져갑니다. 지원.
전체 덤프가 단일 거래. 그렇게하려면를 통과하십시오.-1또는-스플리닝 전환명령 줄 옵션PSQL또는PG_RESTORE. 이 모드를 사용할 때도 가장 작은 오류는 전체 복원을 롤백하며 많은 시간의 처리를 폐기 할 수 있습니다. 에 따라 데이터가 얼마나 상호 관련되어 있는지, 그것은 바람직한 것처럼 보일 수 있습니다. 수동 정리 여부.COPY단일 트랜잭션을 토토 베이하면 명령이 가장 빠르게 실행됩니다. 그리고 WAL 아카이빙을 끄 셨습니다.
run분석나중에.
데이터 전용 덤프가 여전히 토토 베이됩니다COPY그러나 인덱스를 삭제하거나 재현하지는 않습니다. 그리고 그것은 일반적으로 외국 열쇠를 만지지 않습니다.[1]데이터 전용 덤프를로드 할 때 인덱스와 외국 키를 삭제하고 재현하는 데 도움이됩니다. 당신은 이러한 기술을 토토 베이하고 싶습니다. 여전히 유용합니다Checkpoint_segments로드하는 동안 데이터이지만 증가하지 마십시오maintenance_work_mem; 오히려, 당신은 그렇게 할 것입니다 그 후에 인덱스와 외국 키를 수동으로 재현하는 동안. 그리고 잊지 마세요분석언제 당신은 끝났습니다. 보다플래너 업데이트 통계및Autovacuum 데몬자세한 내용은
[1] |
토토 베이하여 외래 키를 비활성화하는 효과를 얻을 수 있습니다. 그만큼-disable-triggers옵션 - 그러나 연기가 아니라 제거한다는 것을 깨달았습니다. 외국 키 검증이므로 나쁜 삽입이 가능합니다. 사용하는 경우 데이터. |