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

14.4. 토토 사이트 채우기

처음에는 많은 양의 데이터를 삽입해야 할 수도 있습니다. 데이터베이스 채우기. 이 섹션에는 다음에 대한 몇 가지 제안 사항이 포함되어 있습니다. 이 프로세스를 최대한 효율적으로 만드는 방법.

14.4.1. 비활성화 자동 커밋

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

14.4.2. 사용복사

사용PostgreSQL : 문서 : 8.3 : 스포츠 토토모두 로드하려면 일련의를 사용하는 대신 하나의 명령으로 행삽입명령.복사명령은 대용량 로드에 최적화되어 있습니다. 행 수; 다음보다 유연성이 떨어집니다.삽입, 그러나 오버헤드가 훨씬 적습니다. 대용량 토토 사이트 로드용. 이후복사은 단일 명령을 사용하는 경우 자동 커밋을 비활성화할 필요가 없습니다. 테이블을 채우려면 이 방법을 사용하세요.

사용할 수 없는 경우복사그럴 수도 있겠네요 사용에 도움이 됩니다PostgreSQL : 문서 : 8.3 : 스포츠 토토 사이트준비된 생성을 위해삽입성명, 그런 다음 사용실행몇번이나 필수. 이렇게 하면 반복적으로 발생하는 일부 오버헤드가 방지됩니다. 분석 및 계획삽입. 다른 인터페이스는 다양한 방식으로 이 기능을 제공합니다. 찾아보세요"준비된 진술"안에 인터페이스 문서.

다음을 사용하여 많은 수의 행을 로드한다는 점에 유의하세요.복사사용하는 것보다 거의 항상 빠릅니다.삽입, 비록준비이 사용되며 여러 삽입이 단일 트랜잭션으로 일괄 처리됩니다.

복사내에서 사용될 때 가장 빠릅니다. 이전과 동일한 거래만들기 표또는잘라내기명령. 에서 그러한 경우에는 WAL을 작성할 필요가 없습니다. 오류가 발생하면 새로 로드된 데이터가 포함된 파일은 어쨌든 제거되었습니다. 그러나 이 고려사항은 다음의 경우에는 적용되지 않습니다.archive_mode이다 이 경우 모든 명령은 WAL을 작성해야 하므로 설정됩니다.

14.4.3. 색인 제거

새로 생성된 테이블을 로드하는 경우 가장 빠른 방법은 테이블을 생성하고 다음을 사용하여 테이블의 데이터를 대량 로드하는 것입니다.복사, 그런 다음 필요한 색인을 만듭니다. 테이블을 위해. 기존 데이터에 대한 인덱스를 생성하는 것은 각 행이 바뀔 때마다 점진적으로 업데이트하는 것보다 빠릅니다. 로드되었습니다.

기존 파일에 많은 양의 데이터를 추가하는 경우 테이블을 삭제하고, 테이블을 로드하고, 그런 다음 인덱스를 다시 생성하십시오. 물론 데이터베이스 성능도 해당 시간 동안 다른 사용자에게 부정적인 영향을 미칠 수 있으므로 인덱스가 없다는 것입니다. 또한 그 전에 두 번 생각해야 합니다 오류 검사가 제공되므로 고유 인덱스를 삭제합니다. 인덱스가 있는 동안 고유 제약 조건이 손실됩니다. 누락되었습니다.

14.4.4. 외래 키 제거 제약

색인과 마찬가지로 외래 키 제약 조건은 다음과 같습니다. 확인됨"대량"더 효율적으로 행 단위보다. 따라서 외래 키를 삭제하는 것이 유용할 수 있습니다. 제약 조건을 적용하고, 토토 사이트를 로드하고, 제약 조건을 다시 생성합니다. 다시, 토토 사이트 로드 속도와 오류 손실 사이에는 균형이 있습니다. 제약 조건이 누락된 동안 확인합니다.

14.4.5. 증가maintenance_work_mem

일시적으로 증가maintenance_work_mem대량의 토토 사이트를 로드할 때 구성 변수가 발생할 수 있습니다. 성능 향상으로 이어집니다. 속도를 높이는 데 도움이 됩니다.색인 생성명령 및테이블 변경 외래 키 추가명령. 그렇지 않습니다 많은 일을 해라복사자체이므로 이것은 조언은 다음 중 하나 또는 둘 다를 사용할 때만 유용합니다. 위의 기술.

14.4.6. 증가checkpoint_segments

일시적으로 증가checkpoint_segments구성 변수를 사용하면 대용량 데이터를 더 빠르게 로드할 수도 있습니다. 이는 많은 양의 데이터를 로드하기 때문입니다.PostgreSQL원인이 될 것입니다 체크포인트는 일반 체크포인트보다 더 자주 발생합니다. 빈도(다음으로 지정됨checkpoint_timeout구성 변수). 체크포인트가 발생할 때마다 모든 더티 페이지를 플러시해야 합니다. 디스크에. 증가시켜서checkpoint_segments대량 데이터 중 일시적으로 로드, 필요한 체크포인트 수는 다음과 같습니다. 감소했습니다.

14.4.7. 끄다archive_mode

대량의 데이터를 설치에 로드할 때 WAL 보관을 사용하는 경우 보관을 비활성화할 수 있습니다(설정 떨어져서아카이브_모드구성 변수) 로드하는 동안. 하는 것이 더 빠를 수도 있습니다 로드가 완료된 후 새 기본 백업을 수행하는 것보다 대량의 증분 WAL 토토 사이트를 처리합니다. 하지만 참고하세요 터닝archive_mode켜기 또는 끄기 서버를 다시 시작해야 합니다.

아카이버가 다음을 처리할 시간을 피하는 것 외에도 WAL 데이터를 사용하면 실제로 특정 명령이 생성됩니다. 다음과 같은 경우 WAL을 전혀 작성하지 않도록 설계되었기 때문에 더 빠릅니다.archive_mode꺼졌습니다. (그들은 할 수 있다 다음을 수행하여 보다 저렴하게 충돌 안전을 보장합니다.fsync마지막에 WAL을 작성하는 것보다.) 이 다음 명령에 적용됩니다:

  • 선택으로 테이블 생성

  • 색인 생성(및 다음과 같은 변형) 와 같이테이블 변경 기본 추가 키)

  • 테이블 세트 테이블스페이스 변경

  • 클러스터

  • 다음에서 복사, 대상이 동일한 테이블이 이전에 생성되었거나 잘렸습니다. 거래

14.4.8. 실행분석이후

귀하가 분포를 크게 변경한 경우 테이블 내의 데이터, 실행 중분석강력히 권장됩니다. 이 테이블에 대량의 데이터를 대량 로드하는 작업이 포함됩니다. 실행 중분석(또는진공 분석)는 플래너가 테이블에 대한 최신 통계입니다. 통계가 없거나 쓸모없는 통계로 인해 기획자는 잘못된 결정을 내릴 수 있습니다. 쿼리를 계획하는 동안 모든 쿼리의 성능이 저하됩니다. 부정확하거나 존재하지 않는 통계가 있는 테이블입니다.

14.4.9. 몇 가지 참고 사항pg_dump

다음에 의해 생성된 덤프 스크립트pg_dump자동으로 여러 개를 적용하지만 위의 지침 중 전부는 아닙니다. 다시 로드하려면pg_dump가능한 한 빨리 덤프하세요. 몇 가지 추가 작업을 수동으로 수행해야 합니다. (이 점을 참고하세요. 동안 신청하세요복원 중덤프, 동안은 아님생성그것. 같은 점 사용시 적용pg_restore에 a에서 로드pg_dump아카이브 파일.)

기본적으로,pg_dump사용복사, 그리고 생성 중일 때 완전한 스키마 및 데이터 덤프, 신중하게 데이터 로드 인덱스와 외래 키를 생성하기 전에. 그래서 이 경우에는 여러 지침이 자동으로 처리됩니다. 무엇을 위해 남았는가 당신이 해야 할 일은:

  • 적절한(즉, 정상보다 큰) 값을 설정하십시오.maintenance_work_mem그리고checkpoint_segments.

  • WAL 아카이브를 사용하는 경우, WAL 아카이브를 사용하는 동안 비활성화하는 것을 고려하십시오. 복원. 그렇게 하려면 전원을 끄세요.archive_mode덤프 스크립트를 로드하기 전에, 그런 다음 다시 켜고 새로운 베이스를 사용하세요. 백업.

  • 전체 덤프를 다음과 같이 복원해야 하는지 고려하십시오. 단일 거래. 그렇게 하려면-1또는--단일 트랜잭션명령줄 옵션psql또는pg_restore. 이 모드를 사용하는 경우에도 가장 작은 오류라도 전체 복원을 롤백합니다. 아마도 많은 시간의 처리 시간을 버릴 수도 있습니다. 에 따라 데이터가 얼마나 상호 연관되어 있는지 확인하는 것이 바람직해 보일 수 있습니다. 수동 정리 여부.복사단일 트랜잭션을 사용하면 명령이 가장 빠르게 실행됩니다. WAL 보관을 해제합니다.

  • 실행분석나중에.

데이터 전용 덤프는 계속 사용됩니다.복사, 하지만 인덱스를 삭제하거나 다시 생성하지는 않습니다. 일반적으로 외래 키를 건드리지 않습니다.[1]그래서 데이터 전용 덤프를 로드할 때, 다음과 같은 경우 인덱스와 외래 키를 삭제하고 다시 생성하는 것은 사용자의 몫입니다. 당신은 그 기술을 사용하고 싶습니다. 늘리는 것이 여전히 유용합니다.checkpoint_segments로드하는 동안 토토 사이트를 늘리되 귀찮게 늘리지는 마세요.maintenance_work_mem; 오히려 넌 그렇게 할 거야 나중에 인덱스와 외래 키를 수동으로 다시 생성하는 동안. 그리고 잊지 마세요분석때 넌 끝났어.

참고

[1]

다음을 사용하여 외래 키를 비활성화하는 효과를 얻을 수 있습니다--비활성화-트리거옵션 — 하지만 단순히 연기하는 것이 아니라 제거한다는 사실을 인식하세요. 외래 키 유효성 검사를 수행하므로 잘못된 삽입이 가능합니다. 사용하면 데이터가 됩니다.