먼저 무지개 토토베이스를 채울 때 많은 양의 무지개 토토를 삽입해야 할 수도 있습니다. 이 섹션은이 프로세스를 가능한 한 효율적으로 만드는 방법에 대한 몇 가지 제안이 포함되어 있습니다.
다중 사용시삽입
s, Autocommit을 끄고 끝에 커밋을 수행하십시오. (일반 SQL에서 이것은 발행을 의미합니다시작
시작시커밋
끝에. 일부 클라이언트 라이브러리는 등 뒤에서이 작업을 수행 할 수 있습니다.이 경우 라이브러리가 원할 때 라이브러리가 수행 해야하는지 확인해야합니다.) 각 삽입을 별도로 커밋하는 경우PostgreSQL추가 된 각 행에 대해 많은 작업을 수행하고 있습니다. 한 번의 트랜잭션에서 모든 삽입을 수행 할 때의 추가 이점은 한 행의 삽입이 실패하면 해당 지점까지 삽입 된 모든 행의 삽입이 롤백되므로 부분적으로로드 된 데이터가 붙어 있지 않을 것입니다..
copy
#usecopy
일련의 일련을 사용하는 대신 모든 행을 하나의 명령으로로드하려면삽입
명령. 그만큼copy
명령은 많은 수의 행을로드하는 데 최적화되었습니다. 보다 유연하지 않습니다.삽입
이지만 큰 무지개 토토로드에 대해서는 오버 헤드가 상당히 덜 발생합니다. 부터copy
단일 명령입니다.이 메소드를 사용하여 테이블을 채우는 경우 자동 커미트를 비활성화 할 필요가 없습니다.
사용할 수없는 경우copy
, 사용에 도움이 될 수 있습니다준비
준비된 생성삽입
statement, 그리고 사용execute
필요한만큼 여러 번. 이것은 반복적으로 구문 분석 및 계획의 오버 헤드를 피합니다삽입
. 다른 인터페이스는이 시설을 다양한 방식으로 제공합니다.“준비된 진술”인터페이스 문서에서.
많은 수의 행을 사용하여copy
사용하는 것보다 거의 항상 빠릅니다삽입
준비
가 사용되고 여러 삽입물이 단일 트랜잭션으로 일괄 처리됩니다.
copy
이전과 동일한 트랜잭션 내에서 사용될 때 가장 빠릅니다테이블 생성
또는Truncate
명령. 이러한 경우 WAL을 작성할 필요가 없습니다. 오류의 경우 새로로드 된 무지개 토토를 포함하는 파일이 어쨌든 제거되므로 WAL은 작성할 필요가 없습니다.Wal_levelis최소
모든 명령이 WAL을 작성해야하기 때문에 그렇지 않으면
새로 생성 된 테이블을로드하는 경우 가장 빠른 방법은 테이블을 작성하고 대량의 무지개 토토를 사용하여를로드하는 것입니다.copy
, 그런 다음 테이블에 필요한 색인을 만듭니다. 기존 데이터에 대한 인덱스 생성은 각 행이로드 될 때 점진적으로 업데이트하는 것보다 빠릅니다.
기존 테이블에 많은 양의 데이터를 추가하는 경우 인덱스를 삭제하고 테이블을로드 한 다음 인덱스를 재현하는 것이 승리 할 수 있습니다. 물론 다른 사용자의 데이터베이스 성능은 인덱스가 누락 된 동안 어려움을 겪을 수 있습니다.
인덱스와 마찬가지로 외래 키 제약 조건을 확인할 수 있습니다“대량”행으로보다 효율적으로. 따라서 외국의 주요 제약 조건을 삭제하고 무지개 토토를로드하고 제약 조건을 다시 생성하는 것이 유용 할 수 있습니다.
기존의 외국 키 제약 조건이있는 테이블에 데이터를로드 할 때 각 새 행에는 서버의 보류중인 트리거 이벤트 목록에 항목이 필요합니다 (행의 외래 키 제한 조건을 확인하는 트리거의 발사이기 때문에). 수백만 행을로드하면 트리거 이벤트 큐가 사용 가능한 메모리를 넘어서서 참을 수없는 스와핑 또는 명령의 실패가 발생할 수 있습니다.필요한많은 양의 무지개 토토를로드 할 때 바람직하지 않은 외래 키를 삭제하고 다시 적용하는 것이 좋습니다. 제약 조건을 임시로 제거하는 것이 허용되지 않으면 다른 상환은로드 작업을 작은 트랜잭션으로 분할하는 것입니다.
maintenance_work_mem
#일시적으로 증가하는maintenance_work_mem구성 변수 다량의 무지개 토토를로드 할 때 성능이 향상 될 수 있습니다. 이것은 속도를 높이는 데 도움이 될 것입니다색인 생성
명령 및ALTER 테이블 외국 키 추가
명령. 그것은별로하지 않을 것입니다copy
자체,이 조언은 위의 기술 중 하나 또는 둘 다를 사용할 때만 유용합니다.
max_wal_size
#일시적으로 증가하는max_wal_size구성 변수는 큰 무지개 토토로드를 더 빨리 만들 수 있습니다. 많은 양의 무지개 토토를로드하기 때문입니다PostgreSQL| 정상 체크 포인트 주파수 (보다 체크 포인트가 더 자주 발생하게됩니다.Checkpoint_Timeout
구성 변수). 체크 포인트가 발생할 때마다 모든 더러운 페이지가 디스크로 플러시되어야합니다.max_wal_size
일시적으로 벌크 데이터로드 중에 필요한 체크 포인트 수를 줄일 수 있습니다.
WAL 아카이빙 또는 스트리밍 복제를 사용하는 설치에 다량의 데이터를로드 할 때 많은 양의 증분 월 데이터를 처리하는 것보다로드가 완료된 후에 새로운베이스 백업을 취하는 것이 더 빠를 수 있습니다. 로드하는 동안 증분 WAL 로깅을 방지하려면 설정하여 아카이브 및 스트리밍 복제를 비활성화합니다Wal_levelto최소
, archive_modetoOFF
및max_wal_senders~ 0. 그러나 이러한 설정을 변경하면 서버가 다시 시작되어야하며 아카이브 복구 및 대기 서버를 위해 사용할 수 없기 전에 모든베이스 백업을 수행하여 데이터 손실로 이어질 수 있습니다..
Archiver 또는 WAL Sender가 WAL 데이터를 처리 할 시간을 피하는 것 외에도,이 작업을 수행하면 실제로 WAL을 전혀 쓰지 않기 때문에 특정 명령이 더 빨라집니다Wal_level
is최소
및 현재 서브 트랜잭션 (또는 최상위 트랜잭션)이 변경 또는 인덱스를 생성하거나 잘라 냈습니다. (그들은 충돌 안전을보다 저렴하게 보장 할 수 있습니다fsync
WAL을 작성하는 것보다 끝에서)
분석
나중에#테이블 내에서 무지개 토토 분포를 크게 변경할 때마다 실행 중분석
강력히 권장됩니다. 여기에는 대량의 데이터가 많은 양의 데이터를 테이블에로드하는 것이 포함됩니다.분석
(또는진공 분석
)는 플래너가 표에 대한 최신 통계를 보장합니다. 통계 나 쓸모없는 통계가 없기 때문에 플래너는 쿼리 계획 중에 잘못된 결정을 내릴 수 있으며, 부정확하거나 존재하지 않는 통계가있는 테이블에서 성능이 저하 될 수 있습니다.분석
자동으로; 보다섹션 24.1.3and섹션 24.1.6자세한 내용은
덤프 스크립트에 의해 생성 된 덤프 스크립트pg_dump위의 지침 중 몇 가지이지만 전부는 아니지만 자동으로 적용됩니다. 복원하려면pg_dump가능한 빨리 덤프하면 수동으로 몇 가지 추가 작업을 수행해야합니다. (이 점이 적용되는 동안복원덤프, 덤프생성it. 텍스트 덤프를로드하는지 동일한 점이 적용PSQL또는 사용PG_RESTOREA에서로드하려면pg_dump아카이브 파일)
기본적으로pg_dump용도copy
, 그리고 완전한 스키마 및 데이터 덤프를 생성 할 때 인덱스 및 외래 키를 생성하기 전에 데이터를로드하는 것이 신중합니다. 따라서이 경우 몇 가지 지침이 자동으로 처리됩니다.
적절한 설정 (예 : 정상보다 큰) 값maintenance_work_mem
andmax_wal_size
.
WAL 아카이빙 또는 스트리밍 복제를 사용하는 경우 복원 중에 비활성화하는 것을 고려하십시오. 그렇게하려면 설정archive_mode
toOFF
, Wal_level
to최소
및max_wal_senders
20238_20346
병렬 덤프 실험 및 두 가지 모두의 복원 모드pg_dumpandPG_RESTORE그리고 사용할 최적의 동시 작업을 찾으십시오. |-j
옵션은 직렬 모드보다 훨씬 높은 성능을 제공해야합니다.
전체 덤프를 단일 트랜잭션으로 복원 해야하는지 고려하십시오. 그렇게하려면를 통과하십시오.-1
또는--- 싱글 전송
명령 줄 옵션PSQL또는PG_RESTORE. 이 모드를 사용할 때 가장 작은 오류조차도 전체 복원을 롤백하여 많은 시간의 처리를 폐기 할 수 있습니다.copy
단일 트랜잭션을 사용하고 WAL 아카이브를 끄면 명령이 가장 빠르게 실행됩니다.
무지개 토토베이스 서버에서 여러 CPU를 사용할 수있는 경우 사용을 고려하십시오.PG_RESTORE's-jobs
옵션. 이를 통해 동시 데이터로드 및 인덱스 생성이 가능합니다.
run분석
이후.
무지개 토토 전용 덤프가 여전히 사용됩니다copy
, 그러나 인덱스를 삭제하거나 재현하지 않으며 일반적으로 외국 키를 터치하지 않습니다.[14]따라서 무지개 토토 전용 덤프를로드 할 때는 해당 기술을 사용하려면 인덱스와 외래 키를 삭제하고 재현하는 것이 귀하에게 달려 있습니다. 여전히 유용합니다max_wal_size
무지개 토토를로드하는 동안maintenance_work_mem
; 오히려, 당신은 그 후에도 인덱스와 외국 키를 수동으로 재현하면서 그렇게 할 것입니다.분석
당신이 끝났을 때; 보다섹션 24.1.3and섹션 24.1.6자세한 내용은
[14]당신은를 사용하여 외래 키를 비활성화하는 효과를 얻을 수 있습니다-disable-triggers
옵션 - 그러나 연기만으로는 외국의 주요 검증이 아니라 제거되므로 사용하면 잘못된 데이터를 삽입 할 수 있습니다..
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면