- 개념
- 하나의 큰 테이블을 물리적으로 작은 단위로 분리하는 것
- 파티셔닝 방법
- 테이블, 인덱스 파티셔닝이 존재(테이블 또는 인덱스당 최대 15000개까지 지원함)
- 수평 파티셔닝
- row의 조건에 따라 파티셔닝함
- 파티셔닝시 proportional fill algorithm에서 나눠지는 단위가 됨
- 데이터베이스의 데이터 저장 알고리즘 proportional fill algorithm.
- range, hash, list로 나누는 방법이 있음
- 이로인해 쿼리성능 향상, 대용량 삭제시 적은 영향으로 삭제 와 같은 이점이 존재
- 샤딩과 다름
- 샤딩은 다른 머신에 데이터를 나누어 저장, 수평 파티셔닝은 하나의 머신에 나누어 저장
- 수직 파티셔닝
- 컬럼 별로 파티션을 나눔
- 중요한정보와 중요하지 않은 정보를 따로 저장해여 보안을 강화할 수 있음
- 자주 조회되는 묶음끼리 나눔으로써 쿼리 성능 향상을 가져옴
- 필요하지 않은 컬럼을 메모리에 올리지 않음으로 I/O향상을 가져옴
- 수평 파티셔닝
- 테이블, 인덱스 파티셔닝이 존재(테이블 또는 인덱스당 최대 15000개까지 지원함)
단점
- 파티션을 잘못 나눌 시 오히려 성능이 저하될 수 있음
- 저장공간, 메모리의 비용이 증가함
- 잘 나눴는지에 대한 지속적인 모니터링 필요
Aggregate에 맞게 수직 파티셔닝 하면 어떨까?
bucketing에 대해 알아보자
https://docs.gitlab.com/ee/development/database/table_partitioning.html
https://learn.microsoft.com/en-us/sql/relational-databases/partitions/partitioned-tables-and-indexes?view=sql-server-ver16
https://learn.microsoft.com/en-us/sql/relational-databases/databases/database-files-and-filegroups?view=sql-server-ver16#file-and-filegroup-fill-strategy
https://www.quora.com/Is-the-concept-of-a-database-partition-a-logical-concept-or-is-it-a-physical-concept
#Database
#Concept