Skip to content

Latest commit

 

History

History
54 lines (31 loc) · 3.22 KB

partitioning.md

File metadata and controls

54 lines (31 loc) · 3.22 KB

Partioning이 먼가여?

얼마전 기술 면접 과정에서 "파티션이 뭔가요? 왜 사용하나요?"라는 질문을 받았었다. 얼추 대답을 하기는 했는데 개념을 너무 모호하게 알 고 있는 것 같아 한번 다시 정리해본다.

파티셔닝은 데이터베이스를 여러 부분으로 분할하는 것을 의미합니다. 서비스의 규모가 커지면 하나의 테이블에 계속해서 데이터가 쌓이게 되면서 용량과 성능 측면에서 여러 이슈가 발생할 수 있습니다. 즉 파티셔닝은 이렇게 큰 테이블이나 인덱스를 작은 파티션(partition) 단위로 나누어 관리하는 기법을 뜻합니다.

파티셔닝은 왜 하나요?

파티셔닝은 데이터베이스 튜닝 기법 중 하나로, 하나의 데이터베이스에 저장되는 데이터 양이 너무 많아져서 조회하는 시간이 길어질 때, 또는 관리 용이성, 성능, 가용성 등의 향상을 이유로 적용됩니다.

  • 인덱스 트리의 높이를 줄여 조회 속도를 향상시킵니다.

  • full scan에서 데이터 접근 범위를 줄여 성능을 향상시킬 수 있습니다.

  • 대용량 데이터 쓰기 과정에 효율적입니다.

  • 물리적인 파티셔닝으로 전체 데이터의 훼손 가능성이 줄어들고 데이터 가용성이 향상됩니다.

  • 파티션 별로 독립적으로 백업하고 복구할 수 있습니다.

  • 테이블의 파티션 단위로 디스크 I/O를 분산하여 경합을 줄일 수 있으므로 update 성능이 향상됩니다.

  • 큰 테이블들을 제거해 관리를 용이하게 합니다.

파티셔닝의 단점은?

  • 파티셔닝은 테이블을 여러 파티션으로 쪼개서 관리하기 때문에 테이블 간의 join 비용이 증가합니다.
  • 테이블과 인덱스를 별도로 파티션 할 수 없다는 제약이 있기 때문에 항상 테이블과 인덱스를 같이 파티셔닝해야 합니다.

파티셔닝 종류

Range, List, Composite, Hash

파티셔닝 방법

1. 수평 파티셔닝(Horizontal Partitioning)

수평 파티셔닝은 하나의 테이블의 데이터들을 같은 스키마의 다른 테이블들로 분할하는 방법입니다.

샤딩(Sharding)

샤딩은 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 기법을 뜻합니다. 수평 파티셔닝은 같은 데이터베이스 내에서 분할하지만 샤딩은 다른 데이터베이스로 분할한다는 차이점을 가집니다.

샤딩은 다른 데이터베이스로 분할하는 것이기 때문에 수평 파티셔닝에 비해 많은 제약을 가지게 됩니다.

2. 수직 파티셔닝(Vertical Partitioning)

수직 파티셔닝은 테이블의 일부 열을 다른 테이블로 분할하는 방법입니다. 즉, 테이블의 칼럼을 기준으로 나누어 파티셔닝 합니다.

장점

  • 자주 사용하는 칼럼을 분리해 성능을 향상시킬 수 있습니다.
  • 같은 타입의 데이터가 저장되어 데이터 압축률을 높일 수 있습니다.
  • 조회 시 필요 없는 칼럼을 조회하지 않아도 되므로 성능상의 이점이 있습니다.

참고 자료