PDW(병렬 Data Warehouse)에서 준비 데이터베이스 사용

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

데이터베이스 기본 사항 준비

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

로드에 대해 준비 데이터베이스를 지정하지 않은 경우 SQL ServerPDW는 대상 데이터베이스에 임시 테이블을 만들고 로드된 데이터를 영구 대상 테이블에 삽입하기 전에 로드된 데이터를 저장하는 데 사용합니다.

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

데이터베이스의 이점 준비

준비 데이터베이스의 주요 장점은 테이블 조각화를 줄이는 것입니다. 준비 데이터베이스를 사용 하지 않는 경우 데이터는 대상 데이터베이스의 임시 테이블로 로드 됩니다. 임시 테이블을 생성 하 고 대상 데이터베이스에서 삭제 하면 임시 테이블 및 영구 테이블에 대 한 페이지가 인터리브 됩니다. 시간이 지남에 따라 테이블 조각화가 발생 하 고 성능이 저하 됩니다. 이와 대조적으로 준비 데이터베이스를 사용 하면 임시 테이블을 영구 테이블과는 별도의 파일 공간으로 만들고 삭제할 수 있습니다.

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

각 데이터베이스 테이블의 저장소 구조는 대상 테이블에 따라 달라 집니다.

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

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

권한

준비 데이터베이스에 대 한 CREATE 권한 (임시 테이블을 만드는 경우)이 필요 합니다.

준비 데이터베이스를 만드는 방법에 대 한 모범 사례

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

  2. 준비 데이터베이스의 크기는 고객 마다 다릅니다. 처음에 어플라이언스를 채울 때 준비 데이터베이스는 초기 로드 작업을 수용할 만큼 충분히 커야 합니다. 여러 로드를 동시에 수행할 수 있으므로 이러한 로드 작업은 매우 편 합니다. 초기 로드 작업이 완료 되 고 시스템이 프로덕션 환경에 있는 경우 각 로드 작업의 크기가 더 작아질 수 있습니다. 로드가 작은 경우 더 작은 부하 크기를 수용하도록 준비 데이터베이스의 크기를 줄일 수 있습니다. 크기를 줄이기 위해 준비 데이터베이스를 삭제하고 더 작은 크기 할당으로 다시 만들거나 ALTER DATABASE 문을 사용할 수 있습니다.

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

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

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

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

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

다음 예제에서는 어플라이언스의 모든 로드에 사용할 스테이징 데이터베이스 Stagedb를 만듭니다. 각각 5GB 크기의 복제 테이블 5개가 동시에 로드될 것으로 예상한다고 가정합니다. 이 동시성으로 복제된 크기에 대해 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  
  
);