study/TIL🐥

[DB] Partition 사용 이유

서나쓰 2021. 7. 7. 11:27
728x90

Partition

  • 파티션이란 MySQL Server에서는 데이터를 별도의 테이블로 분리해서 저장하지만 사용자는 여전히 하나의 테이블로 읽기와 쓰기를 할 수 있게 해 주는 솔루션이다.
  • 파티션은 DBMS 하나의 서버에서 테이블을 분산하는 것이다. (원격 서버간에 분산을 지원하는 것은 아님)
  • MyISAM과 InnoDB 테이블 등 대부분의 스토리지 엔진에서 사용 가능하다
  • Range, List, Hash, Key 네 가지 방법이 존재한다.
대표적인 사용 예
1. 하나의 테이블이 너무 커서 인덱스의 크기가 물리적인 메모리보다 훨씬 큰 경우
2. 데이터 특성상 주지적인 삭제 작업이 필요한 경우

파티션을 사용하는 이유

  • 단일 INSERT, 단일 SELECT, 범위 SELECT의 빠른 처리
  • 인덱스는 일반적으로 셀렉트를 위한 것으로 보이지만 업데이트와 딜리트, 그리고 인설트 쿼리를 위해 필요한 때도 많다.
  • 한 테이블의 인덱스 크기가 물리적으로 MySQL이 사용 가능한 메모리 공간보다 크다면 그 영향은 더 심각해진다.
  • 테이블의 데이터를 워킹 셋과 그렇지 않은 부류로 파티셔닝할 수 있다면 상당히 효과적으로 성능을 개선할 수 있다.
  • 파티셔닝 하지 않고 하나의 큰 테이블로 사용하면 인덱스도 커지고 그만큼 물리적인 메모리 공간도 많이 필요해진다.

List Partition

  • List 파티션은 아래와 같은 상황에서 일반적으로 사용된다.
    • 파티션 키 값이 코드 값이나 카테고리와 같이 고정값일 경우
    • 키 값이 연속적이지 않고 정렬순서와 관계없이 파티션을 해야 할 경우
    • 파티션 키 값을 기준으로 레코드 건수가 균일하고 검색 조건에 파티션 키가 자주 사용될 때

 

업무에서 주로 사용하는 파티션은 list 파티션이므로 리스트만 정리
728x90