달력

9

« 2024/9 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2019. 2. 9. 23:21

파티셔닝 DB2019. 2. 9. 23:21

□ 파티셔닝(Partitioning)

○ 개요

하나의 테이블이나 인덱스를 동일한 논리적 속성을 가진 여러 단위로 나누어 각각이 별도의 물리적 속성을 갖게 하는 것

○ 장점

- 데이터 접근시 스캔 범위를 줄여 성능 향상

- 데이터 훼손 가능성 저하 및 데이터 가용성 향상

- 각 파티션별 백업 및 복구작업 가능

- 테이블 파티션 단위로 디스크 I/O를 분산하여 부하 저하

○ 파티셔닝 종류(오라클 기준)

- 레인지 파티셔닝(Range Partitioning)

· 특정 컬럼 값을 기준으로 분할

· 주로 순차적인 데이터(historical data)를 관리하는 테이블에 사용

 ex) '가입계약관리' 테이블에서는 통상 최근 1~2년치만 접근

· 각 범위에 따라 데이터 분포도가 일정치 않음

· DDL 스크립트

CREATE TABLE TEST_TABLE

(I_YYYYMMDD VARCHAR2(8), I_CUSTOMER VARCHAR2(9), …… )

TABLESPACE TBS1

STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)

PARTITION BY RANGE (I_YYYYMMDD)  <- 파티셔닝 컬럼(16개 까지 지정 가능)

(PARTITION PAR_200307 VALUES LESS THAN (‘20030801’),

PARTITION PAR_200308 VALUES LESS THAN (‘20030901’), …… )

- 해시 파티셔닝(Hash Partitioning)

· 특정 컬럼 값에 해시 함수를 적용해 분할(데이터 관리보다 성능향상에 중점)

· 분포도를 정의하기 어려운 테이블을 파티셔닝할 때 많이 사용(균등한 분포도를 가질 수 있도록 조율, 주로 2의 배수로 파티셔닝)

· 해시 파티셔닝으로 구분된 파티션들은 동일한 논리, 물리 속성을 가지며 파티션에 지정된 값들을 DMBS가 결정하기때문에 각 파티션에 어떤 값이 들어있는지 알 수 없음

· DDL 스크립트

CREATE TABLE TEST_TALBE

( SERIAL NUMBER, CODE VARCHAR2(4), ……)

TABLESPACE TBS1

STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)

PARTITION BY HASH(SERIAL)

(PARTITION PAR_HASH_1 TABLESPACE TBS2,

PARTITION PAR_HASH_2 TABLESPACE TBS3, ……)

- 리스트 파티셔닝(List Partitioning)

· 특정 컬럼의 특정 값을 기준으로 파티셔닝

· 주로 이질적인 값이 많지 않고 분포도가 비슷하며 해당 컬럼의 조건이 많이 들어오는 경우에 사용

 ex) '서비스 계약' 테이블에서 서비스 가입 대리점을 A, 서비스 변경 대리점을 B라고 할 때, 모든 서비스 처리 데이터에는 대리점 타입이 두 가지 존재하고 대부분 조회 패턴에는 두 대리점을 구분하는 값이 주어지게 됨

· DDL 스크립트

CREATE TABLE SERVICE_CONTRACT

(I_YYYYMMDD VARCHAR2(8), I_CUSTOMER VARCHAR2(6),

I_DLR_IND VARCHAR2(2), I_DEALER VARCHAR2(6), …….)

TABLESPACE TBS1

STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)

PARTITION BY LIST (I_DLR_IND)

(PARTITION PAR_A VALUES (‘A’), PARTITION PAR_S VALUES (‘S’))

- 레인지-해시 컴포지트 파티셔닝(Range-Hash Composite Partitioning)

· 레인지 방식으로 데이터를 파티셔닝하고 각 파티션 내에서 해시 방식으로 서브 파티셔닝을 적용하는 방식 → 서브 파티션이 독립된 세그먼트가 되는 것이 특징

· 레인지 파티셔닝으로 관리와 성능 이슈 향상, 해쉬 파티셔닝으로 데이터 균등 배치와 병렬화, 서브 파티션에 특정 테이블 스페이스 지정가능, 서브 파티션별 풀 스캔을 할 수 있어 스캔 범위 줄이는 효과

· DDL 스크립트

CREATE TABE TB_RANGE_HASH

(I_YYYYMMDD VARCHAR2(8), I_SERIAL NUMBER, SALE_PRICE NUMBER, ……)

TABLESPACE TBS1

STORAGE (INITIAL 2M NEXT 2M PCTINCREASE 0)

PARTITION BY RANGE (I_YYYYMMDD)

SUBPARTITION BY HASH (I_SERIAL)

(PARTITION SALES_1997 VALUES LESS THAN (‘19980101’)

(SUBPARTITION SALES_1997_Q1 TABLESPACE TBS2,

SUBPARTITION SALES_1997_Q2 TABLESPACE TBS3), ……)

'DB' 카테고리의 다른 글

DataWarehouse 란?  (0) 2019.03.07
Resource Manager  (0) 2019.02.09
PL/SQL 조건, 반복 제어문  (0) 2017.08.05
PL/SQL 구조와 변수  (0) 2017.08.03
PL/SQL 시작하기  (0) 2017.07.18
:
Posted by SK