본문 바로가기
공부/database

[Oracle] Partition Table

by 김쫘 2019. 5. 19.
PartitionTable

Table Partitioning

  • 대용량 테이블의 성능 향상 및 효율적인 관리를 위해 테이블을 특정 값을 기준으로 해 작은 단위로 나누는 것

 

Partition table의 장·단점

  • 장점

    • 데이터 장애시 해당 파티션을 제외한 파티션에 영향을 주지 않으므로 보다 안전하게 데이터 관리가 가능하다.
    • 파티션 단위로 독립적인 관리가 가능하다.
    • 사용자가 원하는 값으로 파티셔닝 할 수 있다.
    • 테이블 스페이스 간 파티션 이동이 가능하다.
    • 조인 시 파티션 간 및 파티션 내 병렬처리를 수행한다.
    • 데이터 엑세스 범위를 줄여 성능을 향상시킬 수 있다.
    • 테이블 파티션 단위로 디스크 I/O를 분산해 부하를 감소시킨다.

     

  • 단점

    • 파티션 키 값 변경에 대한 별도 관리가 필요하다.
    • 컬럼의 일부로 파티셔닝 하고자 할 때 이에 해당하는 오버헤드 컬럼이 필요하다.
    • 하나의 테이블을 작게 나누어 관리하기 때문에 관리에 주의가 필요하다.

 

Partition의 종류

  • Range Partitioning

    • 특정 컬럼값(주로 날짜값)을 기준으로 파티션을 두는 방식
    • 테이블 간 데이터가 불균형하게 들어갈 수 있다.
    • 파티션을 결정하는 컬럼을 명시해야하며, MAXVALUE값은 NULL을 포함한다.
    • log 등의 데이터에 적합
    • Interval Partitioning: Range Partitioning 방식에서 파티션 추가 규칙을 지정해 새로운 데이터가 입력될 때 규칙에 의해 새로운 파티션을 생성한다.

 

  • Hash Partitioning

    • Partition Key의 Hash 값으로 파티션을 두는 방식
    • 변별력이 좋고 데이터 분포가 고른 컬럼을 키 컬럼으로 선정해야 효과적이다.
    • 일반적으로 균등한 분포를 가진다.
    • 균등 분배를 위해 파티션 개수를 명시해야 한다. (2의 거듭제곱 수)
    • NULL 값은 첫 번째 파티션에 위치하게 된다.

 

  • List Partitioning

    • 파티션 컬럼을 명시하고, 해당 컬럼 값을 기준으로 파티셔닝 하는 방식
    • 연관되지 않거나 순서에 맞지 않는 데이터를 쉽게 Grouping 할 수 있다.
    • 오직 하나의 컬럼으로만 파티션 키가 지정되어야 한다.
    • 대소문자를 구분하며, NULL 값이 명시 가능하다.
    • NULL을 포함한 모든 값은 한 번만 명시 가능하다.
    • 범위 외 문자를 입력할 시 에러가 발생한다.

 

  • Composite Partitioning

    • Range-List / Range-Hash / List-Hash / Range-Range 등의 조합된 파티션으로 구성
    • 복합적인 성격을 띄는 데이터 분할에 용이하다.
    • 파티션, 서브 파티션 단위의 관리가 가능하다.

     

  • Reference Partitioning

    • PK-FK 관계를 통해 부모 테이블의 파티션 방식을 자식 테이블이 상속받아 적용한다.
    • 참조되는 FK 컬럼은 NOT NULL 이어야 한다.

 

  • System Partitioning

    • 파티션 키를 별도로 지정하지 않고 시스템이 알아서 파티셔닝을 해준다.

     

 

댓글