디비 파티셔닝이란?
큰 테이블을 파티션이라는 작은 단위로 나누어 관리하는것
사용 이유
하나의 DBMS에 너무 큰 table이 들어가면서 용량과 성능 측면에서 많은 이슈가 발생하게 되었고,
이런 이슈를 해결하기 위한 방법으로 table을 ‘파티션(partition)’이라는 작은 단위로 나누어 관리하는 ‘파티셔닝(Partitioning)’기법 이 나타나게 되었다
파티션이라는 단위는 무엇인가?
하나의 파티션은 데이터베이스 내에서 데이터가 물리적으로 분리되어 저장되는 단위를 말하며,
주로 특정 조건에 따라 분리된다
아래는 그 조건들의 예시
- 범위 단위 (Range)
- 특정 값의 범위를 기준으로 데이터를 분리
- 예를 들어, 날짜가 "2024-01-01"부터 "2024-12-31"까지인 데이터를 하나의 파티션으로 저장하고, 다른 연도의 데이터는 별도의 파티션에 저장하는 것
- 장점:
- 데이터 검색 속도 향상: 특정 범위에 대해 쿼리할 때 성능이 향상됨. 예를 들어 날짜별 로그 데이터를 자주 조회한다면, 날짜별로 분리하여 조회 성능을 크게 개선할 수 있음.
- 직관적인 관리: 파티션 구간이 명확하여 관리가 쉬움. 특정 범위의 데이터가 증가하거나 줄어드는 패턴을 쉽게 파악 가능.
- 단점:
- 데이터 불균형 가능성: 데이터 분포가 고르지 않을 경우 특정 파티션에 데이터가 집중되어 파티션 간의 부하가 균형을 이루지 못할 수 있음.
- 파티션 관리: 새로운 구간의 데이터가 들어올 경우 파티션을 수동으로 추가해야 하며, 관리가 번거로울 수 있음.
- 해시 단위 (Hash)
- 해시 함수를 사용해 고르게 데이터를 분산하는 방식
- 예를 들어, 고객 ID의 해시 값을 기준으로 데이터를 나누어, 특정 파티션에 데이터가 몰리지 않도록 합니다.
- 장점:
- 균일한 분포: 데이터를 해시를 통해 분산하므로 파티션 간 데이터 분포가 균일하여 특정 파티션에 데이터가 몰리는 현상을 방지할 수 있음.
- 확장성: 대규모 데이터를 다룰 때 파티션이 균등하게 분산되므로 확장성이 좋음.
- 단점:
- 범위 조회 어려움: 범위를 기준으로 데이터를 조회하는 경우 비효율적임. 데이터를 특정 범위로 쿼리할 때 여러 파티션에 분산되어 있어 조회 비용이 커질 수 있음.
- 관리의 어려움: 해시 분포가 변하면 모든 데이터를 재분산해야 하므로 파티션 키 변경이나 확장이 어려움.
- 리스트 단위 (List)
- 특정 값 리스트에 따라 데이터를 분리합니다. 예를 들어, ‘서울’, ‘부산’, ‘인천’ 등과 같이 특정 도시에 따라 데이터를 나누는 것이 가능합니다.
- 장점:
- 명확한 파티션 전략: 특정 값에 따라 파티션을 지정할 수 있어 직관적이고 명확하게 분류 가능. 예를 들어 국가 코드나 카테고리별로 데이터를 구분할 때 유리함.
- 필터링 성능 향상: 각 파티션에 대해 명확히 정의된 값을 사용하여 필터링할 경우 성능이 향상됨.
- 단점:
- 리스트 변경의 복잡성: 새로운 값이 추가되거나 삭제되는 경우 파티션 전략을 재정의해야 하며, 관리가 복잡해질 수 있음.
- 데이터 불균형 가능성: 특정 리스트 값에 데이터가 집중될 경우 특정 파티션에 데이터가 몰리게 되어 성능 문제가 발생할 수 있음.
하나의 파티션은 데이터를 저장하는 파일로 존재하거나,
데이터 블록이나 데이터 페이지 등과 같은 하위 단위로 구성될 수 있습니다.
논리적으로는 하나의 테이블의 일부로서 취급되지만,
물리적으로는 분리된 공간에 저장되어, 필요한 데이터에만 빠르게 접근할 수 있게 해준다
'programming > database' 카테고리의 다른 글
데이터베이스 옵티마이저 (1) | 2024.12.01 |
---|---|
데이터베이스 인덱스 (0) | 2024.10.26 |
데이터베이스 Lock의 종류 (0) | 2024.10.26 |
데이터베이스 정규화 (0) | 2024.10.26 |
디비 데드락 (0) | 2024.10.19 |