문제

Greenplum에서 가져온 데이터로 매 시간 채워야 하는 테이블이 있습니다. 이 테이블은 Greenplum 서버에 저장됩니다.

그래서 제가 알고 싶은 것은 내 데이터(최대 60GB 이상일 수 있음)에 어떤 방법(파이썬 스크립트, Windows 스케줄러 등)이 적합한지 쿼리를 예약하는 데 사용해야 한다는 것입니다(postgreSQL로 작성됨). )은 매시간 실행됩니다.

누군가 동일한 샘플 코드를 첨부할 수 있습니까?

도움이 되었습니까?

해결책

당신은 평행을 원할 것입니다 COPY Greenplum에서 PostgreSQL로의 데이터 범위입니다.빠른 데이터 로딩을 위해 PostgreSQL이 설정되어 있는지 확인하세요.가능하다면 UNLOGGED 테이블;그렇지 않으면 사용 wal_level = 'minimal' 적어도.

병렬 작업자 수는 무엇보다 PostgreSQL 서버의 I/O 하위 시스템에 따라 달라집니다.테스트하고 확인하세요.

나는 psycopg2와 함께 Python을 사용하는 것을 권장합니다. copy_expert 커서 기능.보다 문서.파이프와 함께 멀티프로세싱을 사용하여 리더와 라이터 워커 간에 파일 형식의 객체를 공유합니다. 리더는 greenplum에 연결되고 라이터는 PostgreSQL에 연결됩니다.

따라서 효과적으로 각 작업자는 다음 셸 의사 코드와 비슷한 작업을 수행합니다.

psql -h greenplum-box \
     -c "COPY (SELECT * FROM mytable WHERE id BETWEEN 1 AND 10000) TO stdin" \
  | \
psql -h postgres-box \
     -c "COPY myttable FROM stdin";

(그러나 pyscopg2를 사용하여 둘을 연결하면 copy_export, 다중 처리 및 파이프).

나중에 인덱스 생성과 같은 일반적인 빠른 로딩 작업을 모두 수행합니다.보다 PostgreSQL에서 삽입 성능을 높이는 방법.

디스크 공간이 있으면 다음과 같은 테이블을 만듭니다. dataload_temp, 이를 채운 다음 한 트랜잭션에서 이전 트랜잭션을 삭제하고 새 이름을 이전 이름으로 바꿉니다.그래야 방해가 최소화됩니다.

또는 다음을 살펴보십시오. pg_bulkload 오프라인(비스트리밍) 대량 데이터 로딩용.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top