새소식

반응형
DB/etc

[MySQL] Partition 파티션 이란

  • -
반응형

파티션(Partition)은

MySQL 서버 입장에서 데이터를 별도의 테이블로 분리해서 저장하지만

사용자 입장에서는 여전히 하나의 테이블로 읽기와 쓰기를 할 수 있게 해주는 솔루션이다.

  -> 크기가 큰 테이블을 물리적으로 여러 개로 분할 해주는 기능

 

하나의 DBMS 서버에서 테이블을 분산하는 것, 원격 서버 간의 분산을 지원하는 것이 아니다.

MySQL 5.1부터 제공되는 기능이다.

 

파티션을 사용하는 이유 

1. 테이블의 사이즈가 커져, 인덱스의 크기도 커지는 경우 - 쿼리가 느려짐 

파티션을 이용하여 테이블 분할 할 경우, 인덱스도 각각 생성되어 인덱스 크기가 작아짐 

메모리에서 빠르게 쿼리 작업을 진행할 수 있음 

 

2. 주기적으로 삭제 등의 작업이 이루어지는 히스토리 성 데이터의 효율적인 관리 

히스토리성 테이블을 파티션 테이블로 관리하면, 불필요한 데이터 삭제 작업을 단순히 파티션을 추가하거나 삭제하는 방식으로 간단하고 빠르게 해결할 수 있다.

 

3. 데이터 파일 경량화 및 물리적인 저장소 분리

파티션을 통해 파일의 크기를 조절하거나 각 파티션 별 파일들이 저장될 위치나 디스크를 구분해서 지정할 수 있다.

 

 

파티션 종류 

Range

범위(날짜 등)를 기반으로 파티션을 나눈다. ( 가장 흔히 사용됨)

Range 파티션을 사용하기 좋은 예시

칼럼 1개를 기준으로 범위 조건 (less than)을 이용해 파티셔닝을 한다

  • 날짜 기반으로 테이터가 누적되는 경우
  • 연도, 월, 일 단위로 데이터를 분석하거나 삭제하는 경우

List

코드나 카테고리 등 특정 값을 기반으로 파티션을 나눈다.

In 조건을 이용해 파티셔닝을 한다.

Hash

설정한 Hash 함수를 기반으로 파티션을 나눈다.

Key

MD5 함수를 이용한 Hash값을 기반으로 파티션을 나눈다 ( Hash 보다는 균등하게 나뉨 )

 

 

사용 예시

CREATE TABLE test_logs (
    idx INT NOT NULL,
	reg_date DATETIME NOT NULL,
	PRIMARY KEY(idx, reg_date)
)
PARTITION BY RANGE (YEAR (reg_date)) (
	PARTITION test_logs_2018 VALUES LESS THAN (2019),
	PARTITION test_logs_2019 VALUES LESS THAN (2020),
	PARTITION test_logs_2020 VALUES LESS THAN (2021),
	PARTITION test_logs_etc VALUES LESS THAN MAXVALUE
);
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.