파티션 장단점

·2021년 12월 20일
2

파티션

논리적인 데이터 element를 다수의 entity로 쪼개는 행위.
큰 테이블이나 인덱스를 파티션 단위로 분할하는 것.

파티션 사용하게 된 배경

서비스의 크기가 커지고 데이터 규모가 커면서 DBMS의 용량과 한계, 성능이 저하되면서 테이블을 파티션이라는 단위로 나뉘어 관리하는 파티셔닝 기법이 등장함.
->소프트웨어적인 데이터베이스 분산 처리가 가능해졌다

그렇다면 파티션 목적은?

  1. 성능면에서 특정DML과 쿼리 성능을 향상시킨다. 대용량 write 환경에서 효율적이다.
    full scan에서 데이터 접근 범위를 감소시켜서 성능을 향상시킨다.

  2. 가용성면에서 물리적인 파티셔닝으로 전체 데이터 훼손 가능성이 줄어든다.
    파티션 별로 독립적인 백업과 복구가 가능하다.

  3. 관리적인 면에서도 큰 테이블을 줄일 수 있어서 용이하다.

파티션의 장점

  1. 파티션 단위 백업, 추가, 삭제 , 변경이 가능하다.
  2. 파티션 단위 조회 및 DML를 수행함으로써 필요한 부분만 탐색할 수 있다.

파티션의 단점

  1. JOIN으로 인한 비용이 증가한다.
  2. 테이블과 인덱스를 별도로 파티셔닝하는 건 불가능하다.

파티션의 종류

1. 수평 파티셔닝
스키마가 같은 테이블을 두 개 이상의 테이블에 나누어 저장한다.

  • 키를 기반으로 여러 곳에 저장-> 퍼포먼스, 가용성이 목적이다.
  • 일반적인 분산 저장 기술로 보통의 하나의 데이터베이스 내에서 이루어지는 경우가 많아.
  • 장점: 데이터 개수를 기준으로 나누고 인덱스의 개수를 줄여서 성능이 높아진다.
  • 단점: 서버간의 연결 과정이 많아지고 데이터 탐색 과정이 복잡해져서 latency(지연시간)이 길어진다. 서버 고장 시 데이터 무결성에 취약하다.

2. 수직 파티셔닝
모든 컬럼 중 특정 컬럼을 쪼개서 따로 저장하는 형태이다. 하나의 엔티티를 2개 이상으로 분리한다.

  • 정규화와 유사한 개념이지만 수직 파티셔닝은 정규화된 데이터를 분리하는 과정이다.
  • 장점: 자주 사용하는 컬럼을 분리하여 성능을 향상시킨다. 같은 타입의 데이터를 저장해서 높은 데이터 압축률을 보여준다.

파티셔닝 분할 기준

  1. 범위 분할
    분할 키 값이 범위 내에 있는지 여부로 구분 ex) 우편번호
  2. 목록 분할
    값 목록에 파티션 할당
  3. 해시 분할
    해시 함수의 값에 따라 파티션 포함 여부 결정
  4. 합성 분할
    여러가지 분할 기술의 결합

참고)
https://wedul.site/425
https://docs.oracle.com/cd/B12037_01/server.101/b10743/partconc.htm

profile
코딩하는 은행원 !

0개의 댓글