이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 14.4. 토토 결과베이스 채우기버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

10.4. 데이터베이스 채우기

다음과 같은 경우 테이블을 많이 삽입해야 할 수도 있습니다. 먼저 데이터베이스를 채웁니다. 여기에 몇 가지 팁과 기술이 있습니다. 최대한 효율적으로 만들기 위해.

10.4.1. 자동 커밋 비활성화

자동 커밋을 끄고 마지막에 커밋 하나만 수행하세요. (에서 일반 SQL, 이는 발행을 의미함시작에 시작과커밋마지막에. 일부 클라이언트 라이브러리는 뒤에서 이 작업을 수행할 수 있습니다. 당신이 원할 때 도서관이 이를 수행하는지 확인해야 합니다. 완료.) 각 삽입이 별도로 커밋되도록 허용하는 경우,포스트그레SQL많은 일을 하고 있습니다 추가된 각 레코드에 대한 작업입니다. 모든 작업을 수행하면 얻을 수 있는 추가적인 이점 하나의 트랜잭션에 삽입하는 것은 하나의 트랜잭션을 삽입하는 경우입니다. 레코드가 실패하면 모든 레코드가 삽입됩니다. 그 시점까지는 롤백되므로 막히지 않습니다. 부분적으로 로드된 데이터가 있습니다.

10.4.2. 다음에서 복사 사용

사용STDIN에서 복사모든 것을 로드하려면 일련의를 사용하는 대신 하나의 명령으로 기록합니다.삽입명령. 이렇게 하면 구문 분석, 계획, 등의 오버헤드가 많이 발생합니다. 이렇게 하면 그렇지 않아요 단 하나의 명령이기 때문에 자동 커밋을 끄는 데 필요합니다. 어쨌든.

10.4.3. 색인 제거

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

기존 테이블을 보강하는 경우 다음을 수행할 수 있습니다.드롭 인덱스, 테이블을 로드한 다음 색인. 물론 다른 사용자의 데이터베이스 성능은 지수가 유지되는 동안 부정적인 영향을 받을 수 있습니다. 실종. 고유한 항목을 삭제하기 전에 두 번 생각해야 합니다. 고유한 오류 검사가 제공되므로 인덱스 인덱스가 없으면 제약 조건이 손실됩니다.

10.4.4. 나중에 ANALYZE를 실행하세요.

달리는 것이 좋습니다분석또는진공 분석언제든지 추가했거나 초기 직후를 포함하여 많은 데이터를 업데이트했습니다. 테이블을 채우는 중입니다. 이를 통해 기획자는 테이블에 대한 최신 통계입니다. 통계가 없거나 쓸모없는 통계로 인해 플래너가 쿼리를 잘못 선택할 수 있습니다. 계획을 사용하는 쿼리의 성능이 저하됩니다. 테이블.