PDW(병렬 데이터 웨어하우스)에서 스테이징 데이터베이스 사용

SQL Server PDW(병렬 데이터 웨어하우스)는 준비 데이터베이스를 사용하여 로드 프로세스 중에 데이터를 일시적으로 저장합니다. 기본적으로 SQL Server PDW는 대상 데이터베이스를 준비 데이터베이스로 사용하므로 테이블 조각화가 발생할 수 있습니다. 테이블 조각화를 줄이기 위해 사용자 정의 스테이징 데이터베이스를 만들 수 있습니다. 또는 부하 오류에서 롤백이 문제가 되지 않는 경우 임시 테이블을 건너뛰고 대상 테이블에 직접 로드하여 성능을 향상시키기 위해 fastappend 로드 모드를 사용할 수 있습니다.

스테이징 데이터베이스 기본 사항

스테이징 데이터베이스는 데이터를 어플라이언스 로드하는 동안 일시적으로 저장하는 사용자가 만든 PDW 데이터베이스입니다. 로드에 대해 스테이징 데이터베이스를 지정하면 어플라이언스 먼저 데이터를 준비 데이터베이스에 복사한 다음 준비 데이터베이스의 임시 테이블에서 대상 데이터베이스의 영구 테이블로 데이터를 복사합니다.

스테이징 데이터베이스가 부하에 대해 지정되지 않은 경우 PDW(Analytics Platform System)는 대상 데이터베이스에 임시 테이블을 만들고 로드된 데이터를 영구 대상 테이블에 삽입하기 전에 로드된 데이터를 저장하는 데 사용합니다.

부하가 fastappend 모드사용하는 경우 PDW(Analytics Platform System)는 임시 테이블 사용을 모두 건너뛰고 데이터를 대상 테이블에 직접 추가합니다. Fastappend 모드는 애플리케이션 관점에서 임시 테이블인 테이블에 데이터가 로드되는 ELT 시나리오의 부하 성능을 향상시킵니다. 예를 들어 ELT 프로세스는 데이터를 임시 테이블에 로드하고, 클린sing 및 중복 제거를 통해 데이터를 처리한 다음, 대상 팩트 테이블에 데이터를 삽입할 수 있습니다. 이 경우 애플리케이션의 임시 테이블에 데이터를 삽입하기 전에 PDW가 먼저 내부 임시 테이블에 데이터를 로드할 필요는 없습니다. fastappend 모드는 추가 부하 단계를 방지하여 부하 성능을 크게 향상시킵니다. fastappend 모드를 사용하려면 다중 트랜잭션 모드를 사용해야 합니다. 즉, 실패하거나 중단된 부하에서 복구는 사용자 고유의 부하 프로세스에 의해 처리되어야 합니다.

스테이징 데이터베이스 이점

스테이징 데이터베이스의 주요 이점은 테이블 조각화를 줄이는 것입니다. 스테이징 데이터베이스를 사용하지 않으면 데이터가 대상 데이터베이스의 임시 테이블에 로드됩니다. 대상 데이터베이스에서 임시 테이블을 만들고 삭제하면 임시 테이블 및 영구 테이블의 페이지가 인터리브됩니다. 시간이 지남에 따라 테이블 조각화가 발생하고 성능이 저하됩니다. 반면 스테이징 데이터베이스는 임시 테이블이 영구 테이블과는 별도의 파일 공간에 만들어지고 삭제되도록 합니다.

데이터베이스 테이블 구조 준비

각 데이터베이스 테이블에 대한 스토리지 구조는 대상 테이블에 따라 달라집니다.

  • 힙 또는 클러스터형 columnstore 인덱스에 로드하는 경우 준비 테이블은 힙입니다.

  • rowstore 클러스터형 인덱스에 로드하는 경우 준비 테이블은 rowstore 클러스터형 인덱스입니다.

사용 권한

준비 데이터베이스에 대한 CREATE 권한(임시 테이블 만들기)이 필요합니다.

스테이징 데이터베이스 만들기 모범 사례

  1. 어플라이언스당 하나의 스테이징 데이터베이스만 있어야 합니다. 스테이징 데이터베이스는 모든 대상 데이터베이스에 대한 모든 로드 작업에서 공유할 수 있습니다.

  2. 스테이징 데이터베이스의 크기는 고객별입니다. 처음에 어플라이언스 채울 때 스테이징 데이터베이스는 초기 로드 작업을 수용할 수 있을 만큼 커야 합니다. 이러한 로드 작업은 여러 부하가 동시에 발생할 수 있기 때문에 큰 경향이 있습니다. 초기 부하 작업이 완료되고 시스템이 프로덕션 상태가 되면 각 부하 작업의 크기가 더 작을 수 있습니다. 로드가 작으면 더 작은 부하 크기를 수용하도록 스테이징 데이터베이스의 크기를 줄일 수 있습니다. 크기를 줄이려면 스테이징 데이터베이스를 삭제하고 더 작은 크기 할당으로 다시 만들거나 ALTER DATABASE 문을 사용할 수 있습니다.

    스테이징 데이터베이스를 만들 때 다음 지침을 사용합니다.

    • 복제본(replica)ted 테이블 크기는 동시에 로드되는 모든 복제본(replica)ted 테이블의 컴퓨팅 노드당 예상 크기여야 합니다. 크기는 일반적으로 25-30GB입니다.

    • 분산 테이블 크기는 동시에 로드되는 모든 분산 테이블의 예상 크기(어플라이언스당)여야 합니다.

    • 로그 크기는 일반적으로 복제본(replica) 테이블 크기와 비슷합니다.

예제

A. 스테이징 데이터베이스 만들기

다음 예제에서는 어플라이언스 모든 로드에 사용할 스테이징 데이터베이스인 Stagedb를 만듭니다. 크기가 5GB인 복제본(replica) 테이블 5개가 동시에 로드될 것으로 예상한다고 가정합니다. 이 동시성으로 인해 복제본(replica)ted 크기에 대해 25GB 이상을 할당합니다. 100, 200, 400, 500, 500 및 550GB 크기의 6개의 분산 테이블이 동시에 로드될 것으로 예상한다고 가정합니다. 이 동시성으로 인해 분산 테이블 크기에 대해 2250GB 이상이 할당됩니다.

CREATE DATABASE Stagedb  
WITH (  
  
    AUTOGROW = ON,  
  
    REPLICATED_SIZE = 25 GB,  
  
    DISTRIBUTED_SIZE = 2250 GB,  
  
    LOG_SIZE = 25 GB  
  
);