파티션

선봉·2023년 3월 12일
0

MySQL

목록 보기
33/36

파티션

파티션(Partition)은 대용량 데이터를 처리할 때 성능과 관리의 용이성을 위해 데이터를 분할하는 방법입니다. 이를 통해 한 개의 대형 테이블을 작은 조각으로 나누어 관리하고,
데이터 처리 시간을 단축시킬 수 있습니다.

✔️ 파티션을 지우면 파티션 안에 데이터도 함께 지워진다.

✔️ 외래 키를 설정할 수 없다.

✔️ 스토어드 프로시저, 스토어드 함수, 사용자 변수 등을 파티션 함수나 식에 사용할 수 없다.

✔️ 임시 테이블은 파티션 기능을 사용할 수 없다.

✔️ 파티션 키에는 일부 함수만 사용할 수 있다.

✔️ 파티션 개수는 최대 8192개까지 지원한다.

✔️ RANGE파티션은 숫자형의 연속된 범위를 사용하고, LIST파티션은 숫자형 또는 문자형의 연속되지 않은 것을 키로 지정한다.

✔️LIST파티션에 MAXVALUE는 사용할 수 없다. 모든 경우의 파티션 값을 지정해야한다.

종류

  • Range Partitioning : 지정한 열 값의 범위에 따라 파티션을 분할합니다. 예를 들어, 날짜별로 데이터를 분할하는 경우에 사용할 수 있습니다.
  • List Partitioning : 지정한 열 값의 목록에 따라 파티션을 분할합니다. 예를 들어, 지역별로 데이터를 분할하는 경우에 사용할 수 있습니다.
  • Hash Partitioning : 지정한 열 값에 대한 해시 함수에 따라 파티션을 분할합니다. 데이터를 균등하게 분할하기 때문에, 데이터가 균등하게 분산되는 경우에 사용할 수 있습니다.
  • Key Partitioning : 지정한 열 값을 기준으로 파티션을 분할합니다. 해시 파티션이나 리스팅 파티션보다는 범위 파티션과 비슷한 형태를 갖습니다.

파티션 생성

  • CREATE TABLE 문을 사용하여 파티션이 지정된 테이블을 생성합니다.
  • 파티션 유형에 따라 PARTITION BY 절을 추가하여 파티션을 생성합니다.
CREATE TABLE 테이블명 (
   컬럼명1 데이터형,
   컬럼명2 데이터형,
   ...
)
PARTITION BY [ RANGE | LIST | HASH | KEY ] (컬럼명);

파티션 구성

  • 각 파티션마다 분할 조건을 정의한다.
PARTITION 테이블명1 VALUES [ LESS THAN | IN ] (),
PARTITION 테이블명2 VALUES [ LESS THAN | IN ] (),
...

파티션 추가

  • ALTER TABLE문으로 추가
ALTER TABLE 테이블명 ADD PARTITION (파티션조건)

파티션 분할

  • ALTER TABLE문으로 분할

  • 기존 part3을 part3, part4로 분할한다.

ALTER TABLE partTBL
	REORGANIZE PARTITION part3 INTO(
		PARTITION part3 VALUES LESS THAN(1986),
		PARTITION part4 VALUES LESS THAN MAXVALUE);
OPTIMIZE TABLE partTBL; -- 변경내용을 적용시켜준다.

파티션 통합

  • part1, part2를 part12으로 합친다.
ALTER TABLE partTBL
	REORGANIZE PARTITION part1, part2 INTO(
		PARTITION part12 VALUES LESS THAN(1979));
OPTIMIZE TABLE partTBL;  

파티션 삭제

  • part12 파티션을 삭제하면 그 안에 저장된 데이터도 함께 삭제되었다.
ALTER TABLE partTBL DROP PARTITION part12;
select * from partTBL;

파티션 정보

select TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, TABLE_ROWS
	FROM INFORMATION_SCHEMA.PARTITIONS
    WHERE TABLE_NAME = 'parttbl';
  • 결과 - TABLE_ROWS : 결과 개수

profile
백엔드 개발자

0개의 댓글

관련 채용 정보