반응형
파티셔닝이란?
데이터 사이즈가 큰 테이블을 두 개 이상의 작은 테이블로 나누는 것을 파티셔닝이라고 한다.
보통 쿼리가 스캔할 데이터의 범위를 좁혀서 응답시간을 빠르게 하기 위한 목적으로 사용한다.
http://wiki.hash.kr/index.php/%ED%8C%8C%ED%8B%B0%EC%85%94%EB%8B%9D
하나의 공간에 데이터를 모두 저장하기에 너무 크고 부담일 경우에 나눠서 저장하는데
수직 분할과 수평 분할이 있다.
수직분할
수직 분할은 간단히 정규화와 비슷하다.
정규화에 대한 내용은 아래 참고 포스팅 참고 바란다.
수평분할
주의 깊게 봐야할 부분은 바로 이 수평 분할이다.
동일한 테이블 구조를 여러개 만들고 값을 나누는것 처럼 보이는데
동일한 테이블을 만든다기보다는 하나의 테이블 저장공간을 나누는 의미이다.
대부분 갯수나, 기간 단위로 잘라서 별도로 관리를 하고,
조회할때 특정 파티션을 명시해주면 빠르게 조회가 가능하다.
장점과 단점은 아래와 같다.
장점 | Query performance 가 특정 상황에서는 아주 향상될 수 있음 특히, 대부분 많이 접근되는 행이 하나나 몇개의 파티셔닝에 집중되어 있다면 파티셔닝 자체가 인덱스 사이즈를 줄이는 것이 가능하고, 때로는 많이 사용하는 부분을 메모리에 모두 올리는 것이 가능할 수 있기 때문 필요한 데이터만 빠르게 조회가 가능하기 때문에 쿼리 자체가 가벼움. 하나의 파티션에 큰 부분을 접근하는 쿼리나 업데이트에서 성능 향상이 가능 인덱스를 타거나 랜덤하게 전체의 테이블에 있는 데이터를 읽는 대신에 하나의 파티션에서 순차적인 스캔이 가능하기 때문 대량의 데이터를 올리거나 삭제하는 것이 파티션을 통째로 다룸으로써 가능 |
단점 | 테이블간 JOIN에 대한 비용이 증가하고 테이블과 인덱스를 따로 파티셔닝 할 수 없음 데이터를 입력 받았을때 어디에 넣어야 하는지에 대한 연산 오버헤드가 발생이 가능하고 인덱스만으로 해결되는 부분 파티셔닝을 적용하였을때는 오히려 성능이 나빠질 수가 있음 |
참고 포스팅
https://thenicesj.tistory.com/741
반응형
'IT > Knowledge' 카테고리의 다른 글
[kafka] 컨슈머 그룹이란? (20) | 2024.02.11 |
---|---|
샤딩(Sharding) 이란? (22) | 2024.02.04 |
Dispatcher Servlet 이란? (feat. FrontController 패턴) (25) | 2024.01.18 |
SPA / MPA 에 대해서 (23) | 2024.01.16 |
HTTP Method (종류 및 상태코드) (24) | 2024.01.12 |
댓글