새소식

반응형
DB/etc

[MySQL] Partition 파티션 이란

  • -
반응형

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

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

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

 

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

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

 

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

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

 

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

 

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

 

 

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

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

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

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

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

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

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

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 );
반응형

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

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