처음에는 많은 양의 데이터를 삽입해야 할 수도 있습니다. 데이터베이스 채우기. 이 섹션에는 다음에 대한 몇 가지 제안 사항이 포함되어 있습니다. 이 프로세스를 최대한 효율적으로 만드는 방법.
자동 커밋을 끄고 마지막에 커밋 하나만 수행하세요. (에서 일반 SQL, 이는 발행을 의미함시작에 시작과커밋마지막에. 일부 클라이언트 라이브러리는 뒤에서 이 작업을 수행할 수 있습니다. 당신이 원할 때 도서관이 이를 수행하는지 확인해야 합니다. 완료.) 각 삽입이 별도로 커밋되도록 허용하는 경우,스포츠 토토많은 일을 하고 있습니다 추가된 각 행에 대해 작업합니다. 추가 혜택 하나의 트랜잭션에서 모든 삽입은 다음과 같습니다. 한 행이 실패하면 모든 행이 삽입됩니다. 그 시점까지는 롤백되므로 계속해서 멈추지 않을 것입니다. 부분적으로 데이터가 로드되었습니다.
사용PostgreSQL : 문서 : 8.0 : 스포츠 토토 결과모두 로드하려면 일련의를 사용하는 대신 하나의 명령으로 행삽입명령.복사명령은 대용량 로드에 최적화되어 있습니다. 행 수; 다음보다 유연성이 떨어집니다.삽입, 그러나 오버헤드가 훨씬 적습니다. 대용량 데이터 로드용. 이후복사은 단일 명령을 사용하는 경우 자동 커밋을 비활성화할 필요가 없습니다. 테이블을 채우려면 이 방법을 사용하세요.
사용할 수 없는 경우복사도움이 될 것 같아요 사용하다PostgreSQL : 문서 : 8.0 : 사설 토토에 준비된 생성하기삽입성명, 그런 다음 사용실행몇번이나 필수. 이렇게 하면 반복적으로 발생하는 일부 오버헤드가 방지됩니다. 분석 및 계획삽입.
다음을 사용하여 많은 수의 행을 로드한다는 점에 유의하세요.복사사용하는 것보다 거의 항상 빠릅니다.삽입, 비록준비이 사용되며 여러 삽입이 단일 트랜잭션으로 일괄 처리됩니다.
새로 생성된 테이블을 로드하는 경우 가장 빠른 방법은 테이블을 생성하고 다음을 사용하여 테이블의 데이터를 대량 로드하는 것입니다.복사, 그런 다음 필요한 색인을 만듭니다. 테이블을 위해. 기존 데이터에 대한 인덱스를 생성하는 것은 각 행이 바뀔 때마다 점진적으로 업데이트하는 것보다 빠릅니다. 로드되었습니다.
기존 테이블을 보강하는 경우, 인덱스를 만들고 테이블을 로드한 다음 인덱스를 다시 만듭니다. 물론, 다른 사용자의 데이터베이스 성능이 저하될 수 있습니다. 인덱스가 누락된 동안 영향을 받습니다. 하나는해야한다 또한 고유 인덱스를 삭제하기 전에 두 번 생각하십시오. 고유 제약 조건에 따른 오류 검사가 손실됩니다. 색인이 누락된 동안.
일시적으로 증가maintenance_work_mem대량의 데이터를 로드할 때 구성 변수가 발생할 수 있습니다. 성능 향상으로 이어집니다. 이는 B-트리가 인덱스는 처음부터 생성되며, 테이블을 정렬해야 합니다. 병합 정렬에서 더 많은 것을 사용할 수 있도록 허용 메모리가 필요하다는 것은 더 적은 수의 병합 패스가 필요하다는 것을 의미합니다. 더 큰 설정 중maintenance_work_mem5월 또한 외래 키 제약 조건의 유효성 검사 속도도 향상됩니다.
일시적으로 증가checkpoint_segments구성 변수를 사용하면 대용량 데이터 로드를 더 빠르게 할 수도 있습니다. 이는 많은 양의 데이터를 로드하기 때문입니다.스포츠 토토발생할 수 있음 체크포인트는 일반 체크포인트보다 더 자주 발생합니다. 빈도(다음으로 지정됨checkpoint_timeout구성 변수). 체크포인트가 발생할 때마다 모든 더티 페이지를 플러시해야 합니다. 디스크에. 증가시켜서checkpoint_segments대량 데이터 중 일시적으로 로드, 필요한 체크포인트 수는 다음과 같습니다. 감소했습니다.
귀하가 분포를 크게 변경한 경우 테이블 내의 데이터, 실행 중분석강력히 권장됩니다. 이 테이블에 대량의 데이터를 대량 로드하는 작업이 포함됩니다. 실행 중분석(또는진공 분석)은 플래너가 테이블에 대한 최신 통계입니다. 통계가 없거나 쓸모없는 통계로 인해 기획자는 작업 중에 잘못된 결정을 내릴 수 있습니다. 쿼리 계획으로 인해 다음이 포함된 모든 테이블의 성능이 저하됩니다. 부정확하거나 존재하지 않는 통계입니다.