상세 컨텐츠

본문 제목

Db2 테이블 파티셔닝

Db2 for LUW

by 파란디비 2023. 7. 2. 18:10

본문

대형 태이블은 관리나 성능 개선을 위헤 파티셔닝을 적용하게 됩니다. 데이터 분할은 업무 특성에 따라 이루어져야 하며 Db2에서 적용 가능한 파티셔닝 기법인 Range, LIst, Hash, MDC, Hybrid 에 대해 알아보겠습니다.

 

1. Range Partitioning

Range 파티션은 테이블 데이터가 하나 이상의 컬럼 값에 따라 범위 값에 의해 복수의 오브젝트로 분산됩니다. 각 오브젝트는 서로 다른 각각의 테이블 스페이스에 저장될 수 있으며 병렬처리 됩니다.

 

(1) 특징

컬럼 값 범위를 기준으로 행을 분할하는 형태

Range Partition에서 Table은 단지 논리적인 구조이며 실제 데이터가 물리적으로 저장되는 곳은 Partition으로 나누어진 Tablespace에 저장

PARTITION BY RANGE(컬럼목록): 범위를 나눌 기준 컬럼 목록 명시

(2) 활용 예

CREATE TABLE "TPCH    "."CUSTOMER_RANGE"  (
                  "C_CUSTKEY" INTEGER NOT NULL ,
                  "C_NAME" VARCHAR(25) NOT NULL ,
                  "C_ADDRESS" VARCHAR(40 ) NOT NULL ,
                  "C_NATIONKEY" INTEGER NOT NULL ,
                  "C_PHONE" CHAR(15 ) NOT NULL ,
                  "C_ACCTBAL" DECIMAL(15,2) NOT NULL ,
                  "C_MKTSEGMENT" CHAR(10 ) NOT NULL ,
                  "C_COMMENT" VARCHAR(117 ) NOT NULL )
(PARTITION BY RANGE (C_MKTSEGMENT)
(PART P1 STARTING 'AUTOMOBILE' ENDING 'AUTOMOBILE' IN TBSP1,
PART P2 STARTING 'BUILDING' ENDING 'BUILDING' IN TBSP2,
PART P3 STARTING 'FURNITURE' ENDING 'FURNITURE' IN TBSP3,
PART P4 STARTING 'HOUSEHOLD' ENDING 'HOUSEHOLD' IN TBSP4,
PART P5 STARTING 'MACHINERY' ENDING 'MACHINERY' IN TBSP5)
 COMPRESS YES ADAPTIVE

 

2. List Partitioning

List 파티션은 테이블 데이터가 특정 컬럼 값에 따라 리스트 파티션이라고 하는 복수의 오브젝트에 분산된 데이터 조직입니다. 각 오브젝트는 서로 다른 각각의 테이블 스페이스에 저장될 수 있으며 병렬처리 됩니다.

(1) 특징

Column의 특정 값으로 Partitioning을 하는 방법

키 값list를 작성하고, 이 키 값의 리스트에 따라 나누어짐

장점 - 연관되지 않은 데이터, 순서에 맞지 않는 데이터의 grouping 을 손쉽게 구현

값별로 분포도가 비슷하며, 많은 SQL에서 해당 Column의 조건을 사용하는 경우 유용

(2) 활용 예

CREATE TABLE "TPCH    "."CUSTOMER_LIST"  (
                  "C_CUSTKEY" INTEGER NOT NULL ,
                  "C_NAME" VARCHAR(25) NOT NULL ,
                  "C_ADDRESS" VARCHAR(40) NOT NULL ,
                  "C_NATIONKEY" INTEGER NOT NULL ,
                  "C_PHONE" CHAR(15) NOT NULL ,
                  "C_ACCTBAL" DECIMAL(15,2) NOT NULL ,
                  "C_MKTSEGMENT" CHAR(10) NOT NULL ,
                  "C_COMMENT" VARCHAR(117) NOT NULL ,
                  "C_MKTSEGMENT_LIST" GENERATED ALWAYS AS
(CASE
WHEN C_MKTSEGMENT = 'AUTOMOBILE' THEN 1
WHEN C_MKTSEGMENT = 'BUILDING' THEN 2
WHEN C_MKTSEGMENT = 'FURNITURE' THEN 3
WHEN C_MKTSEGMENT = 'HOUSEHOLD' THEN 4
WHEN C_MKTSEGMENT = 'MACHINERY'  THEN 5
) IMPLICITLY HIDDEN
) PARTITION BY RANGE (C_MKTSEGMENT_LIST)
(STARTING 1 ENDING 5 EVERY 1)
IN TBSP1, TBSP2, TBSP3,TBSP4,TBSP5  ;

 

 

3. Hash Partioning

Hash 파티션은 테이블 데이터가 특정 컬럼 값에 따라 해쉬 파티션이라고 하는 복수의 오브젝트에 분산된 데이터 조직입니다. 각 오브젝트는 서로 다른 각각의 테이블 스페이스에 저장될 수 있으며 병렬처리 됩니다.

특히 DPF 환경에서는 논리적인 하나의 데이터베이스를 여러 파티션으로 분리할 수 있으며 생성된 테이블 들은 여러 파티션 으로 분리됩니다. 

 

(1) 특징

Partitioning columnPartitioning Key 값에 Hash 함수를 적용하여 Data를 여러 파티션으로 분할

대용량 데이터를 균등한 분포로 여러 파티션으로 나누고 병렬처리 기능으로 처리 성능 개선

(2) 활용 예 

 

  • 일반 환경(non-DPF)
CREATE TABLE "TPCH    "."CUSTOMER_HASH"  (
                  "C_CUSTKEY" INTEGER NOT NULL ,
                  "C_NAME" VARCHAR(25) NOT NULL ,
                  "C_ADDRESS" VARCHAR(40) NOT NULL ,
                  "C_NATIONKEY" INTEGER NOT NULL ,
                  "C_PHONE" CHAR(15 ) NOT NULL ,
                  "C_ACCTBAL" DECIMAL(15,2) NOT NULL ,
                  "C_MKTSEGMENT" CHAR(10) NOT NULL ,
                  "C_COMMENT" VARCHAR(117) NOT NULL ,
                  "C_CUSTKEY_HASH" SMALLINT NOT NULL IMPLICITLY HIDDEN GENERATED
ALWAYS AS (MOD(HASH4(CHAR(C_CUSTKEY)),2)) )

PARTITION BY RANGE (C_CUSTKEY_HASH)
(  PART p1 STARTING(-2) ENDING(-2) IN tbsp1 ,
  PART p2 STARTING(-1) ENDING(-1) IN tbsp2 ,
  PART p3 STARTING(0)  ENDING(0)  IN tbsp3 ,
  PART p4 STARTING(1)  ENDING(1)  IN tbsp4 ,
  PART p5 STARTING(2)  ENDING(2)  IN tbsp5 );

  • DPF 환경

아래 예제는 3개의 파티션에 Customer와 Sales테이블이 cust_id의 hash 값에 의해 분산 저장하고 있습니다.

 

4. MDC Partitioning

MDC (Multi Dimensional Clustering)DBMS가 데이터를 물리적으로 다차원 큐브 형태로 저장하여 질의 속도를 급격히 향상시키는 기능입니다. 일반 클러스터링 인덱스의 경우는 하나의 칼럼에 한해서만 물리적으로 저장된 위치를 보장 받을 수 있지만 MDC의 경우는 여러 칼럼에 대해 별도의 물리적 저장 위치를 보장 받을 수 있어 물리적 데이터 읽기를 급격히 줄여 성능을 개선합니다.

 

(1) 특징

다차원의 물리적 Range Partitioning

관리비용 절감(Reorganization, Index Maintenance)

•다차원 OLAP 쿼리 성능 개선

(2) 활용 예

CREATE TABLE SALES
(SALES_DATE DATE, REGION CHAR(10),SALES_VOLUME BIGINT,
YEAR INT GENERATED ALWAYS (YEAR(SALES_DATE)))ORGANIZE BY DIMENSIONS (REGION, YEAR);

 

5. Hybrid Partitioning

위에서 제공되는 다양한 파티셔닝 기법을 혼합하여 파티셔닝을 구현할 수 있습니다.

아래 그림은 DPF환경에서 HASH, RANGE, MDC 등을 혼합하여 Hybrid Partition을 구성 한 예입니다. 

 

이상으로 Db2에서 적용할 수 있는 다양한 파티셔닝 기법에 대해 알아보았습니다. 

'Db2 for LUW' 카테고리의 다른 글

Db2 pureScale on AWS  (0) 2023.10.05
Db2 on Windows 에 'SQL1092N' 에러 해결하기  (0) 2023.10.03
CP4D에 Db2U 설치하기  (0) 2023.06.07
Db2U - 컨테이너형 Db2  (0) 2023.05.20
스마트하게 워크로드 관리하기  (0) 2023.03.12

관련글 더보기

댓글 영역