[DB] DB 파티션 테이블
파티션 테이블이란?
논리적으로는 하나의 테이블이지만 물리적으로는 데이터들이 여러 개의 파티션으로 나뉘어져서 저장이 된다.
논리적으로 하나의 테이블이기 때문에 쿼리를 작성할 때 일반 테이블처럼 똑같이 조회하면 된다.
파티션 키 컬럼(파티셔닝 키)
데이터들이 파티션으로 나뉘어져서 각각 다른 세그먼트에 담겨질 때 그 나뉘는 기준이 파티션 키 컬럼이다.
키 컬럼 기준에 따라 Range Partition, List Partition, Hash Partition으로 나뉜다.

1. Range Partition(주로 사용)
컬럼의 범위(날짜)로 분할
ex) 계약일 기준으로 2023-01-01 ~ 2023-12-31 의 데이터를 하나의 파티션으로 담겠다.
2. List Partition
컬럼의 특정 값으로 분할
ex) 상품 테이블을 List 파티션 구성 → 상품군에 따라 보장, 저축 등을 각각 다른 파티션으로 담겠다.
3. Hash Partition
Hash 함수에 의해 랜덤으로 분할
찾고 싶은 데이터가 어느 파티션으로 들어갈 지 알 수 없기 때문에 관리 목적에는 맞지 않는다.
왜 구성을 하는가?
대용량이라 조회할 때 시간이 너무 많이 걸린다, 부하가 심하다 라고 했을 때 파티션으로 지정
ex) 로그테이블
파티션 Pruning
불필요한 파티션을 액세스 대상에서 제외하는 기능 → 어떤 특정한 데이터를 조회할 때 그 데이터가 포함된 파티션만 뒤질 수 있는 기능 → 조회 속도가 빠르다.
인덱스 파티셔닝
Local vs Global
1. Local 파티션 인덱스(주로 사용)
테이블 파티션 키 컬럼과 인덱스 파티션 키가 같음
ex) 테이블 파티션 키(com_ym) → 인덱스 키(com_ym)
2. Global 파티션 인덱스
테이블 파티션 키 컬럼과 인덱스 파티션 키가 서로 다름, 잘 구성하지 않음
ex) 테이블 파티션 키(com_ym) → 인덱스 키(insco_cd)
Prefixed vs Nonprefixed
Prefixed : 인덱스 첫 번째 컬럼이 인덱스 파티션 키와 같음
Nonprefixed : 인덱스 첫 번째 컬럼이 인덱스 파티션 키와 다름
1. Local Prefixed Index
Local : 테이블 파티션 키 컬럼과 인덱스 파티션 키가 같음
Prefixed : 인덱스 첫 번째 컬럼이 인덱스 파티션 키와 같음
ex) 테이블 파티션 키(com_ym) → 인덱스 키(com_ym, insco_cd, inspol_no)
2. Local Non-Prefixed Index
Local : 테이블 파티션 키 컬럼과 인덱스 파티션 키가 같음
Nonprefixed : 인덱스 첫 번째 컬럼이 인덱스 파티션 키와 다름
ex) 테이블 파티션 키(com_ym) → 인덱스 키(mb_id, com_ym)
3. Global Prefixed Index
Global : 테이블 파티션 키 컬럼과 인덱스 파티션 키가 서로 다름
Prefixed : 인덱스 첫 번째 컬럼이 인덱스 파티션 키와 같음
ex) 테이블 파티션 키(com_ym) → 인덱스 키(insco_cd)
Leave a comment