[DB] DB 파티션 테이블

파티션 테이블이란?

논리적으로는 하나의 테이블이지만 물리적으로는 데이터들이 여러 개의 파티션으로 나뉘어져서 저장이 된다.

논리적으로 하나의 테이블이기 때문에 쿼리를 작성할 때 일반 테이블처럼 똑같이 조회하면 된다.

파티션 키 컬럼(파티셔닝 키)

데이터들이 파티션으로 나뉘어져서 각각 다른 세그먼트에 담겨질 때 그 나뉘는 기준이 파티션 키 컬럼이다.

키 컬럼 기준에 따라 Range Partition, List Partition, Hash Partition으로 나뉜다.

파티션 테이블의 종류.gif

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)

Categories:

Updated:

Leave a comment