지원 버전 :현재(17) /16 / 15 / 14 / 13
개발 버전 :18 / Devel
지원되지 않는 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

14.4. 데이터베이스 채우기#

먼저 데이터베이스를 채울 때 많은 양의 데이터를 삽입해야 할 수도 있습니다. 이 섹션은이 프로세스를 가능한 한 효율적으로 만드는 방법에 대한 몇 가지 제안이 포함되어 있습니다.

14.4.1. 자동 커밋 비활성화#

다중 사용시삽입S, AutoCommit을 끄고 끝에 커밋을 수행하십시오. (일반 SQL에서 이것은 발행을 의미합니다시작시작시커밋끝에. 일부 클라이언트 라이브러리는 등 뒤에서이 작업을 수행 할 수 있습니다.이 경우 라이브러리가 원할 때 라이브러리가 수행 해야하는지 확인해야합니다.) 각 삽입을 별도로 커밋하는 경우postgresql추가 된 각 행에 대해 많은 작업을 수행하고 있습니다. 한 번의 트랜잭션에서 모든 삽입을 수행 할 때의 추가 이점은 한 행의 삽입이 실패하면 해당 지점까지 삽입 된 모든 행의 삽입이 롤백되므로 부분적으로로드 된 데이터가 붙어 있지 않을 것입니다..

14.4.2. 사용COPY #

useCOPY일련의 일련을 사용하는 대신 모든 행을 하나의 명령으로로드하려면삽입명령. 그만큼COPY명령은 많은 수의 행을로드하는 데 최적화되었습니다. 보다 유연하지 않습니다.삽입14275_14346COPY단일 명령입니다.이 메소드를 사용하여 테이블을 채우는 경우 자동 커밋을 비활성화 할 필요가 없습니다.

사용할 수없는 경우COPY, 사용에 도움이 될 수 있습니다준비준비된 생성삽입Statement, 그리고 사용execute필요한만큼 여러 번. 이것은 반복적으로 구문 분석 및 계획의 오버 헤드를 피합니다삽입. 다른 인터페이스는이 시설을 다양한 방식으로 제공합니다. 찾아보기준비된 진술인터페이스 문서에서.

많은 수의 행을 사용하여COPY사용하는 것보다 거의 항상 빠릅니다삽입준비가 사용되고 여러 삽입물이 단일 트랜잭션으로 배치됩니다.

COPY이전과 동일한 트랜잭션 내에서 사용될 때 가장 빠릅니다테이블 만들기또는Truncate명령. 이러한 경우 kèo bóng đá cúp c2을 작성할 필요가 없습니다. 오류의 경우 새로로드 된 데이터를 포함하는 파일이 어쨌든 제거되므로 kèo bóng đá cúp c2은 작성할 필요가 없습니다. 그러나이 고려 사항은에만 적용됩니다.Wal_levelis최소모든 명령이 kèo bóng đá cúp c2을 작성해야하므로 그렇지 않으면

14.4.3. 인덱스 제거16131_16134

새로 생성 된 테이블을로드하는 경우 가장 빠른 방법은 테이블을 작성하고 대량의 데이터를 사용하여를로드하는 것입니다.COPY, 그런 다음 테이블에 필요한 색인을 만듭니다. 기존 데이터에 대한 인덱스 생성은 각 행이로드 될 때 점진적으로 업데이트하는 것보다 빠릅니다.

기존 테이블에 많은 양의 데이터를 추가하는 경우 인덱스를 삭제하고 테이블을로드 한 다음 인덱스를 재현하는 것이 승리 할 수 ​​있습니다. 물론 다른 사용자의 데이터베이스 성능은 인덱스가 누락 된 동안 어려움을 겪을 수 있습니다. 고유 한 인덱스를 삭제하기 전에 두 번 생각해야합니다. 인덱스가 누락 된 상태에서 고유 한 제약 조건이 손실되기 때문입니다.

14.4.4. 외국의 주요 제약 제거#

인덱스와 마찬가지로 외래 키 제약 조건을 확인할 수 있습니다대량행 바이크 랑보다 더 효율적입니다. 따라서 외국의 주요 제약 조건을 삭제하고 데이터를로드하고 제약 조건을 다시 생성하는 것이 유용 할 수 있습니다. 다시 말하지만, 제약 조건이 누락 된 동안 데이터로드 속도와 오류 검사 손실 사이에는 상충 관계가 있습니다.

기존의 외국 키 제약 조건이있는 테이블에 데이터를로드 할 때 각 새 행에는 서버의 보류중인 트리거 이벤트 목록에 항목이 필요합니다 (행의 외래 키 제한 조건을 확인하는 트리거의 발사이기 때문에). 수백만 행을로드하면 트리거 이벤트 큐가 사용 가능한 메모리를 넘어서서 참을 수없는 스와핑 또는 명령의 실패가 발생할 수 있습니다. 따라서 일 수 있습니다.필요한많은 양의 데이터를로드 할 때 바람직하지 않은 외래 키를 삭제하고 다시 적용하는 것입니다. 제약 조건을 임시로 제거하는 것이 허용되지 않으면 다른 상환은로드 작업을 작은 트랜잭션으로 분할하는 것입니다.

14.4.5. 증가하다maintenance_work_mem #

일시적으로 증가하는Maintenance_Work_Mem구성 변수 다량의 데이터를로드 할 때 성능이 향상 될 수 있습니다. 이것은 속도를 높이는 데 도움이 될 것입니다색인 생성명령 및ALTER 테이블 외국 키 추가명령. 그것은별로하지 않을 것입니다COPY19041_19137

14.4.6. 증가하다max_wal_size #

일시적으로 증가하는max_wal_size구성 변수는 큰 데이터로드를 더 빨리 만들 수 있습니다. 많은 양의 데이터를로드하기 때문입니다PostgreSQL정상 체크 포인트 주파수보다 체크 포인트가 더 자주 발생하게됩니다 (Checkpoint_Timeout구성 변수). 체크 포인트가 발생할 때마다 모든 더러운 페이지가 디스크로 플러시되어야합니다. 증가함으로써max_wal_size일시적으로 벌크 데이터로드 중에 필요한 체크 포인트 수를 줄일 수 있습니다.

14.4.7. kèo bóng đá cúp c2 보관 및 스트리밍 복제 비활성화#

kèo bóng đá cúp c2 아카이빙 또는 스트리밍 복제를 사용하는 설치에 다량의 데이터를로드 할 때 많은 양의 증분 월 데이터를 처리하는 것보다로드가 완료된 후에 새베이스 백업을 취하는 것이 더 빠를 수 있습니다. 로드하는 동안 증분 kèo bóng đá cúp c2 로깅을 방지하려면 설정하여 아카이브 및 스트리밍 복제를 비활성화합니다Wal_levelto최소, archive_modetoOFFmax_wal_senders0까지. 그러나 이러한 설정을 변경하면 서버가 다시 시작되어야하며 아카이브 복구 및 대기 서버를 위해 사용할 수 없기 전에 모든베이스 백업을 수행하여 데이터 손실로 이어질 수 있습니다..

21286_21471Wal_levelis최소21547_21719fsynckèo bóng đá cúp c2을 작성하는 것보다 끝에서)

14.4.8. 달리다분석이후#

테이블 내에서 데이터 분포를 크게 변경할 때마다 실행 중분석강력히 권장됩니다. 여기에는 대량의 데이터가 많은 양의 데이터를 테이블에로드하는 것이 포함됩니다. 달리기분석(또는진공 분석)는 플래너가 테이블에 대한 최신 통계를 보장합니다. 통계 나 쓸모없는 통계가 없기 때문에 플래너는 쿼리 계획 중에 잘못된 결정을 내릴 수 있으며, 부정확하거나 존재하지 않는 통계가있는 테이블에서 성능이 저하 될 수 있습니다. Autovacuum 데몬이 활성화되면 실행될 수 있습니다분석자동으로; 보다섹션 24.1.3and섹션 24.1.6자세한 내용은

14.4.9. 에 대한 몇 가지 메모pg_dump #

덤프 스크립트에 의해 생성pg_dump위의 지침 중 몇 가지이지만 모두를 자동으로 적용합니다. 복원하려면pg_dump가능한 빨리 덤프하면 수동으로 몇 가지 추가 작업을 수행해야합니다. (이 점이 적용되는 동안복원덤프, 덤프23827_23837it. 텍스트 덤프를로드하는지 동일한 점이 적용PSQL또는 사용PG_RESTOREA에서로드하려면pg_dump아카이브 파일)

기본적으로pg_dump용도COPY24171_24398

  • 적절한 설정 (예 : 정상보다 큰) 값maintenance_work_memandmax_wal_size.

  • kèo bóng đá cúp c2 아카이빙 또는 스트리밍 복제를 사용하는 경우 복원 중에 비활성화하는 것을 고려하십시오. 그렇게하려면 설정archive_modetooff, Wal_levelto최소max_wal_senders25066_25177

  • 25237_25299pg_dumpandPG_RESTORE​​그리고 사용할 최적의 동시 작업을 찾으십시오. |-j옵션은 직렬 모드보다 훨씬 높은 성능을 제공해야합니다.

  • 전체 덤프를 단일 트랜잭션으로 복원 해야하는지 고려하십시오. 그렇게하려면를 통과하십시오.-1또는--- 단일 전환명령 줄 옵션PSQL또는PG_RESTORE. 이 모드를 사용할 때 가장 작은 오류조차도 전체 복원을 롤백하여 많은 시간의 처리를 폐기 할 수 있습니다. 데이터가 어떻게 관련되어 있는지에 따라 수동 정리에 바람직한 것처럼 보일 수 있습니다.copy단일 트랜잭션을 사용하고 kèo bóng đá cúp c2 아카이브를 끄면 명령이 가장 빠르게 실행됩니다.

  • 데이터베이스 서버에서 여러 CPU를 사용할 수있는 경우 사용을 고려하십시오.PG_RESTORE's-jobs옵션. 이를 통해 동시 데이터로드 및 인덱스 생성이 가능합니다.

  • run분석이후.

데이터 전용 덤프가 여전히 사용됩니다COPY, 그러나 인덱스를 삭제하거나 재현하지 않으며 일반적으로 외국 키를 촉구하지 않습니다.[14]따라서 데이터 전용 덤프를로드 할 때는 해당 기술을 사용하려면 인덱스와 외래 키를 삭제하고 재현하는 것이 귀하에게 달려 있습니다. 여전히 유용합니다max_wal_size데이터를로드하는 동안Maintenance_work_mem; 오히려, 당신은 그 후에도 인덱스와 외국 키를 수동으로 재현하면서 그렇게 할 것입니다. 그리고 잊지 마세요분석당신이 끝났을 때; 보다섹션 24.1.3and섹션 24.1.6자세한 내용은



[14]당신은를 사용하여 외래 키를 비활성화하는 효과를 얻을 수 있습니다.-disable-triggers옵션 - 그러나 연기만으로는 외국의 주요 검증이 아니라 제거되므로 사용하면 잘못된 데이터를 삽입 할 수 있습니다..