미스터 역마살

[오라클] 테이블 파티셔닝(Table Partitioning) 본문

Database/ORACLE

[오라클] 테이블 파티셔닝(Table Partitioning)

Mr. YeokMaSsal 2016. 7. 26. 16:51
728x90
반응형



♣ 파티셔닝 이란?

  지속적으로 증가하가나 용량이 큰 테이블들을 파티션이라는 보다 작은 단위로 나눔으로써 성능이 저하되는 것을
방지하고 관리를 보다 수월하게 하고자 하는것을 파티셔닝이라고 한다. 



♣ 파티셔닝이 필요한 이유

  1) 관리적 측면 : 파티션 단위 백업, 추가, 삭제, 변경등

  2) 성능적 측면 : 파티션 단위 조회 및 DML 수행.



♣  파티션 기본구조

  1) 수동파티셔닝 

    - 파티션 뷰를 통해 파티션 기능을 구현했으며 이를 수동 파티셔닝이라고 부른다. 

    - 파티션 뷰의 핵심 기능은 뷰쿼리에 사용된 조건절에 부합하는 테이블만 읽는다는 데에 있으며,
      이를 파티션 Pruning이라고 하며, 파티션 Pruning의 필수조건은 체크제약(Check constraint)을 설정 하는 것이다.


 2) 파티션 테이블

   - 오라클 8i에서 도입된 파티션 테이블 기능을 이용하면 훨씬 간편하게 파티션을 정의 할 수 있을 뿐만 아니라
     기능적으로도 더 낫다.

   - 파티셔닝은 내부에 몇개의 세그먼트를 생성하고 그것들이 논리적으로 하나의 오브젝트임을 메타정보로 딕셔너리에
     저장해 두는 것에 지나지 않는다. 

   - 파티션 되지 않은 일반테이블 일때는 테이블과 세그먼트가 1:1 관계지만 파티션 테이블일 경우는 1:M 의 관계이며,
     이는 인덱스 파티셔닝 또한 마찬가지다.



♣ 파티션 유형

  - RANGE 파티셔닝(8이상)

  - 해시 파티셔닝(8i 이상)

  - 리스트 파티셔닝 (9i 이상)

  - Range - 해시 파티셔닝 (8i 이상)

  - Range 리스트 파티셔닝 (9i 이상)

  - Range-Range 파티셔 닝 (l1g 이 상)

  - 리스트-해시 파티셔닝 (l1g 이상)

  - 리스트 리스트 파티셔닝 (l1g 이상)

  - 리스트-Range 파티셔닝 (l1g 이상)



♣ Range 파티셔닝

 - 오라클 8버전 부터 제공된 가장 기본적인 파티셔닝 방식으로 주로 아래와 같이 날짜 컬럼을 기준으로 한다. 

 - 파티셔닝 테이블에 값을 입력하면 각 레코드를 파티션 키 컬럼 값에 따라 분할 저장하고 읽을때도 검색조건을
   만족하는 파티션만 읽을 수 있어 이력성 데이터 조회시 성능을 크게 향상 시켜준다. 

 - 파티션 키로는 1~16개 까지 등록 가능하다.




♣ 해시 파티셔닝

 - 파티션 키에 해시함수를 적용한 결과 값이 같은 레코드를 같은 파티션 세그먼트에 저장해두는 방식이며 주로
   고객ID처럼 변별력이 좋고 데이터 분포가 고른 컬럼을 파티션 기준으로 선정해야 효과적이다.

 - 해시 파티셔닝의 경우 Range와 리스트 파티셔닝과는 달리 파티션 개수만 사용자가 결정하고 데이터를
   분산시키는 해싱 알고리즘은 오라클에 의해 결정되기 때문에 데이터 분포를 신중히 생각하여야 한다.




♣ 리스트 파티셔닝

 - 9i 부터 시작되 리스트 파티셔닝은 사용자에 의해 미리 정해진 그룹핑 기준에 따라 데이터를 분할 저장하는
   방식이다.

 - Range 파티션에서는 값의 순서에 따라 저장할 파티션이 결정되지만 리스트 파티션은 순서와 상관없이
   불연속적인 값의 목록으로서 결정된다.

 - Range 파티션과는 달리 리스트 파티셔닝에는 단일 컬럼만드로 파티션 키를 지정 할 수 있다.




♣ 결합 파티셔닝

 - 결합 파티셔닝을 구성하면 서브 파티션 마다 세그먼트를 하나씩 할당 하고, 서브 파티션 단위로 데이터를
   저장한다. 즉 주 파티션 키에 따라 1차적으로 데이터를 분배하고 서브 파티션키에  따라 최종적으로 저장할
   위치를 결정한다.



♣ 11g에 추가된 파티션 유형

  1) Reference 파티셔닝

    = 부모테이블 파티션 키를 이용해 자식 테이블을 파티셔닝하는 기능이 Reference 파티셔닝 이다.

  2) interval 파티셔닝

    = 파티션 생성시 interval 기준을 정의 함으로써 정해진 간격으로 파티션이 자동 추가되도록 할 수 있다.
      특히 테이블을 일단위로 파티셔닝 했을때 유용하다.



★ 본 내용은 '오라클 성능 고도화 원리와 해법 2' 를 보고 공부한 내용을 정리한 것 입니다.

   자세한 내용은 책을 참고하세요.





-끝-




728x90
Comments