파티셔닝(Partitioning)
: 큰 테이블이나 인덱스를 관리하기 쉬운 단위로 분리하는 방법이다.
장점
- 가용성(Availability) : 물리적인 파티셔닝으로 인해 전체 데이터 훼손 가능성이 줄어들고 데이터 가용성이 향상된다.
- 관리용이성(Manageability) : 큰 테이블들을 제거하여 관리를 쉽게 해준다.
- 성능(Performance) : 특정 DML과 Query 성능을 향상시킴, 많은 Insert가 있는 OLTP 시스템에서 Insert 작업들을 분리된 파티션 들로 분산시켜준다.
단점
- 테이블간 조인에 대한 비용이 증가한다.
- 테이블과 인덱스를 별도로 파티션 할 수는 없다. 테이블과 인덱스를 같이 파티셔닝 해야한다.
파티션의 종류
1. Range Partitioning
: 어떤 특정 컬럼의 값을 기준으로 분할 하는 것이다. 주로 년도 데이터를 관리하는 테이블에 많이 적용된다.
예제)
"가입계약" 이라는 테이블이 있고 여기에 5년 동안 테이블이 관리되어 지고 있다. 주로 접근하는 데이터는 금년도 및 전년도가 대부분이며 그 이전 데이터는 보관용으로 기록해두고 있다. 이것을 년도별로 또는 월별로 파티셔닝(Partitioning)하고 데이터를 조회하는 시스템의 SQL Acess Path를 조정하여 전체 데이터가 아닌 최근 정보를 가지고 있는 파티션만 접근 하도록 하여 성능을 향상시킬 수 있다.
CREATE TABLE CONTRACT
(
YEAR varchar2(8),
NAME varchar2(9),
...
)
TABLESPACE TBS1
STORAGE(NITIAL 2M NEXT 2M PCTINCREASE 0)
PARTITION BY RANGE (YEAR)
(
PARTITION PAR_200307 VALUES LESS THAN ('20030801'),
PARTITION PAR_200308 VALUES LESS THAN ('20030901'),
...
)
PARTITION BY RANGE(YEAR) : 년도 컬럼 기준으로 파티셔닝을 선정
VALUES LESS THAN('VALUE') : 해당 파티션이 어느 범위에 포함될 것인지 결정 (Upper Bound)
즉 이하 데이터부터 20030801 미만 까지
20030801 부터 20030901 미만 까지
2. Hash Partitioning
: 어떤 특정 컬럼 값에 Hash Function을 적용하여 분할하는 방식으로 데이터 관리 목적보다는 성능향상의 목적으로 나온 개념이다.
Range partitioning의 경우 각 범위에 따라 데이터 양이 일정치 않아 분포도가 일정하게 되지 않는 단점이 있으므로 일정한 분포를 가진 파티션으로 나누고 균등한 분포도를 이용하여 병렬 프로세싱(Parallel Processing)으로 성능을 향상시키기 위한 것이다.
CREATE TABLE CONTRACT
(
SERIAL NUMBER,
CODE VARCHAR2(4),
....
)
TABLESPACE TBS1
STORAGE(INITAL 2M NEXT 2M PCTINCREATE 0)
PARTITION BY HASH(SERIAL)
(
PARTITION PAR_HASH_1 TABLESPACE TBS2,
PARTITION PAR_HASH_2 TABLESPACE TBS3,
....
)
Range Partition과는 다르게 각 Partition에 지정되는 Value들은 DBMS가 정하게 되므로 각 Partition에 어떤 값들이 들어가 있는지는 알 수 없다.
3. List Partitioning
: 특정 컬럼의 특정 값으로 파티셔닝(Partitioning)을 하겠다는 의미이다.
참고
https://nesoy.github.io/articles/2018-02/Database-Partitioning
http://www.dator.co.kr/encore/textyle/205656
'프로그래밍 > Database' 카테고리의 다른 글
(데이터베이스) Delete, Drop, Truncate 데이터 삭제하기 (0) | 2019.01.19 |
---|---|
(데이터베이스) Merge into 사용하기 (0) | 2019.01.18 |
(데이터베이스) 정규화란? (0) | 2018.12.10 |
(데이터베이스) 데이터 독립성과 구조 사상 (0) | 2018.12.02 |
(데이터베이스) 데이터베이스 개념 (0) | 2018.12.02 |