파티셔닝(Partitioning)은 대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것을 의미한다. 대용량 DB의 경우 데이터가 증가됨에 따라 성능 저하가 발생하므로 테이블을 작은 단위로 나누어 분산 저장함으로써 성능 저하를 방지할 수 있다. 이 때, 데이터 처리는 테이블 단위로 수행하고 데이터 저장은 파티션별로 수행한다.
수평 파티셔닝이란 하나의 테이블을 레코드 단위로 분할하여 두개의 테이블을 만드는 방법이다.
샤딩(Sharding)이란 대용량의 데이터를 처리하기 위해 테이블을 수평 분할하여 데이터를 분산 저장 및 처리하는 것이다. 이 때, 수평 분할된 작은 테이블을 샤드(shard)라고 한다.
수직 파티셔닝은 테이블의 일부 열을 분리하는 형태로 분할한다. 열이 사용되는 빈도에 따라 분할하게 되면 자주 사용되는 테이블의 데이터 양이 줄어 조회 성능을 향상 시킬 수 있다.
지정한 열의 값을 기준으로 분할함
해시 분할은 Key값에 해시함수를 적용시킨 결과값에 따라 데이터를 분할하는 방법이다. 특정 파티션에 데이터가 집중되는 범위 분할의 단점을 보완한 것으로, 데이터를 고르게 분산할 수 있는 반면 데이터의 위치를 파악 할 수 없다. 고객 번호, 주민번호 등과 같이 데이터가 고른 컬럼에 효과적이다.
범위 분할로 분할한 후 해시 함수를 적용하여 다시 분할하는 방식이다. 주로 범위 분할한 파티션이 너무 ㅏ커서 관리가 어려울 때 사용한다.