먼저 데이터베이스를 채울 때 많은 양의 데이터를 삽입해야 할 수도 있습니다. 이 섹션은이 프로세스를 가능한 한 효율적으로 만드는 방법에 대한 몇 가지 제안이 포함되어 있습니다.
다중 사용시삽입
S, AutoCommit을 끄고 끝에 커밋을 수행하십시오. (일반 SQL에서 이것은 발행을 의미합니다시작
시작시커밋
끝에. 일부 클라이언트 라이브러리는 등 뒤에서이 작업을 수행 할 수 있습니다.이 경우 라이브러리가 원할 때 라이브러리가 수행 해야하는지 확인해야합니다.) 각 삽입을 별도로 커밋하는 경우postgresql추가 된 각 행에 대해 많은 작업을 수행하고 있습니다. 한 번의 트랜잭션에서 모든 삽입을 수행 할 때의 추가 이점은 한 행의 삽입이 실패하면 해당 지점까지 삽입 된 모든 행의 삽입이 롤백되므로 부분적으로로드 된 데이터가 붙어 있지 않을 것입니다..
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을 작성해야하므로 그렇지 않으면
새로 생성 된 테이블을로드하는 경우 가장 빠른 방법은 테이블을 작성하고 대량의 데이터를 사용하여를로드하는 것입니다.COPY
, 그런 다음 테이블에 필요한 색인을 만듭니다. 기존 데이터에 대한 인덱스 생성은 각 행이로드 될 때 점진적으로 업데이트하는 것보다 빠릅니다.
기존 테이블에 많은 양의 데이터를 추가하는 경우 인덱스를 삭제하고 테이블을로드 한 다음 인덱스를 재현하는 것이 승리 할 수 있습니다. 물론 다른 사용자의 데이터베이스 성능은 인덱스가 누락 된 동안 어려움을 겪을 수 있습니다. 고유 한 인덱스를 삭제하기 전에 두 번 생각해야합니다. 인덱스가 누락 된 상태에서 고유 한 제약 조건이 손실되기 때문입니다.
인덱스와 마찬가지로 외래 키 제약 조건을 확인할 수 있습니다“대량”행 바이크 랑보다 더 효율적입니다. 따라서 외국의 주요 제약 조건을 삭제하고 데이터를로드하고 제약 조건을 다시 생성하는 것이 유용 할 수 있습니다. 다시 말하지만, 제약 조건이 누락 된 동안 데이터로드 속도와 오류 검사 손실 사이에는 상충 관계가 있습니다.
기존의 외국 키 제약 조건이있는 테이블에 데이터를로드 할 때 각 새 행에는 서버의 보류중인 트리거 이벤트 목록에 항목이 필요합니다 (행의 외래 키 제한 조건을 확인하는 트리거의 발사이기 때문에). 수백만 행을로드하면 트리거 이벤트 큐가 사용 가능한 메모리를 넘어서서 참을 수없는 스와핑 또는 명령의 실패가 발생할 수 있습니다. 따라서 일 수 있습니다.필요한많은 양의 데이터를로드 할 때 바람직하지 않은 외래 키를 삭제하고 다시 적용하는 것입니다. 제약 조건을 임시로 제거하는 것이 허용되지 않으면 다른 상환은로드 작업을 작은 트랜잭션으로 분할하는 것입니다.
maintenance_work_mem
#일시적으로 증가하는Maintenance_Work_Mem구성 변수 다량의 데이터를로드 할 때 성능이 향상 될 수 있습니다. 이것은 속도를 높이는 데 도움이 될 것입니다색인 생성
명령 및ALTER 테이블 외국 키 추가
명령. 그것은별로하지 않을 것입니다COPY
19041_19137
max_wal_size
#일시적으로 증가하는max_wal_size구성 변수는 큰 데이터로드를 더 빨리 만들 수 있습니다. 많은 양의 데이터를로드하기 때문입니다PostgreSQL정상 체크 포인트 주파수보다 체크 포인트가 더 자주 발생하게됩니다 (Checkpoint_Timeout
구성 변수). 체크 포인트가 발생할 때마다 모든 더러운 페이지가 디스크로 플러시되어야합니다. 증가함으로써max_wal_size
일시적으로 벌크 데이터로드 중에 필요한 체크 포인트 수를 줄일 수 있습니다.
kèo bóng đá cúp c2 아카이빙 또는 스트리밍 복제를 사용하는 설치에 다량의 데이터를로드 할 때 많은 양의 증분 월 데이터를 처리하는 것보다로드가 완료된 후에 새베이스 백업을 취하는 것이 더 빠를 수 있습니다. 로드하는 동안 증분 kèo bóng đá cúp c2 로깅을 방지하려면 설정하여 아카이브 및 스트리밍 복제를 비활성화합니다Wal_levelto최소
, archive_modetoOFF
및max_wal_senders0까지. 그러나 이러한 설정을 변경하면 서버가 다시 시작되어야하며 아카이브 복구 및 대기 서버를 위해 사용할 수 없기 전에 모든베이스 백업을 수행하여 데이터 손실로 이어질 수 있습니다..
21286_21471Wal_level
is최소
21547_21719fsync
kèo bóng đá cúp c2을 작성하는 것보다 끝에서)
분석
이후#테이블 내에서 데이터 분포를 크게 변경할 때마다 실행 중분석
강력히 권장됩니다. 여기에는 대량의 데이터가 많은 양의 데이터를 테이블에로드하는 것이 포함됩니다. 달리기분석
(또는진공 분석
)는 플래너가 테이블에 대한 최신 통계를 보장합니다. 통계 나 쓸모없는 통계가 없기 때문에 플래너는 쿼리 계획 중에 잘못된 결정을 내릴 수 있으며, 부정확하거나 존재하지 않는 통계가있는 테이블에서 성능이 저하 될 수 있습니다. Autovacuum 데몬이 활성화되면 실행될 수 있습니다분석
자동으로; 보다섹션 24.1.3and섹션 24.1.6자세한 내용은
덤프 스크립트에 의해 생성pg_dump위의 지침 중 몇 가지이지만 모두를 자동으로 적용합니다. 복원하려면pg_dump가능한 빨리 덤프하면 수동으로 몇 가지 추가 작업을 수행해야합니다. (이 점이 적용되는 동안복원덤프, 덤프23827_23837it. 텍스트 덤프를로드하는지 동일한 점이 적용PSQL또는 사용PG_RESTOREA에서로드하려면pg_dump아카이브 파일)
기본적으로pg_dump용도COPY
24171_24398
적절한 설정 (예 : 정상보다 큰) 값maintenance_work_mem
andmax_wal_size
.
kèo bóng đá cúp c2 아카이빙 또는 스트리밍 복제를 사용하는 경우 복원 중에 비활성화하는 것을 고려하십시오. 그렇게하려면 설정archive_mode
tooff
, Wal_level
to최소
및max_wal_senders
25066_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
옵션 - 그러나 연기만으로는 외국의 주요 검증이 아니라 제거되므로 사용하면 잘못된 데이터를 삽입 할 수 있습니다..