먼저 토토 꽁 머니베이스를 채울 때 많은 양의 토토 꽁 머니를 삽입해야 할 수도 있습니다. 이 섹션은이 프로세스를 가능한 한 효율적으로 만드는 방법에 대한 몇 가지 제안이 포함되어 있습니다.
다중 사용시삽입
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_senders0까지. 그러나 이러한 설정을 변경하면 서버가 다시 시작되어야하며 아카이브 복구 및 대기 서버를 위해 사용할 수 없기 전에 모든베이스 백업을 수행하여 데이터 손실로 이어질 수 있습니다..
Archiver 또는 WAL Sender가 WAL 데이터를 처리 할 시간을 피하는 것 외에도,이 작업을 수행하면 실제로 WAL을 전혀 쓰지 않기 때문에 특정 명령이 더 빨라집니다.Wal_level
is최소
및 현재 서브 트랜잭션 (또는 최상위 트랜잭션)이 변경 또는 인덱스를 생성하거나 잘라 냈습니다. (그들은 충돌 안전을보다 저렴하게 보장 할 수 있습니다fsync
WAL을 작성하는 것보다 끝에서)
분석
나중에테이블 내에서 토토 꽁 머니 분포를 크게 변경할 때마다 실행 중분석
강력히 권장됩니다. 여기에는 대량의 데이터가 많은 양의 데이터를 테이블에로드하는 것이 포함됩니다. 달리기분석
(또는진공 분석
)는 플래너가 테이블에 대한 최신 통계를 보장합니다. 통계 나 쓸모없는 통계가 없기 때문에 플래너는 쿼리 계획 중에 잘못된 결정을 내릴 수 있으며, 부정확하거나 존재하지 않는 통계가있는 테이블에서 성능이 저하 될 수 있습니다. Autovacuum 데몬이 활성화되면 실행될 수 있습니다분석
자동으로; 보다섹션 25.1.3and섹션 25.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
24122_24233
병렬 덤프 실험 및 두 가지의 복원 모드pg_dump및PG_RESTORE사용해야 할 최적의 동시 작업 수를 찾으십시오. |-j
옵션은 직렬 모드보다 훨씬 높은 성능을 제공해야합니다.
전체 덤프를 단일 트랜잭션으로 복원 해야하는지 고려하십시오. 그렇게하려면를 통과하십시오.-1
또는--- 단일 전환
명령 줄 옵션PSQL또는PG_RESTORE. 이 모드를 사용할 때 가장 작은 오류조차도 전체 복원을 롤백하여 많은 시간의 처리를 폐기 할 수 있습니다. 데이터가 어떻게 관련되어 있는지에 따라 수동 정리에 바람직한 것처럼 보일 수 있습니다.COPY
단일 트랜잭션을 사용하고 WAL 아카이브를 끄면 명령이 가장 빠르게 실행됩니다.
토토 꽁 머니베이스 서버에서 여러 CPU를 사용할 수있는 경우 사용을 고려하십시오.PG_RESTORE's-Jobs
옵션. 이를 통해 동시 데이터로드 및 인덱스 생성이 가능합니다.
run분석
나중에.
토토 꽁 머니 전용 덤프가 여전히 사용됩니다COPY
, 그러나 인덱스를 삭제하거나 재현하지 않으며 일반적으로 외국 키를 터치하지 않습니다.[14]따라서 토토 꽁 머니 전용 덤프를로드 할 때는 해당 기술을 사용하려면 인덱스와 외래 키를 삭제하고 재현하는 것이 귀하에게 달려 있습니다. 여전히 유용합니다max_wal_size
토토 꽁 머니를로드하는 동안maintenance_work_mem
; 오히려, 당신은 그 후에도 인덱스와 외국 키를 수동으로 재현하면서 그렇게 할 것입니다. 그리고 잊지 마세요분석
당신이 끝났을 때; 보다섹션 25.1.3and섹션 25.1.6자세한 내용은
[14]당신은를 사용하여 외래 키를 비활성화하는 효과를 얻을 수 있습니다-disable-triggers
옵션 - 그러나 연기, 외국 키 검증이 아니라 외국의 주요 검증이 아니라 제거된다는 것을 인식하여 사용하면 잘못된 데이터를 삽입 할 수 있습니다..
올바른 문서에 아무것도 표시되면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면