DB Partitioning이란?
파티셔닝이랑 매우 큰 테이블을 여러개의 partition으로 나누는 데이터 베이스 프로세스이다.
큰테이블을 더 작은 테이블로 분할하면 스캔할 데이터가 적기 때문에 데이터의 일부에만 접근하는 쿼리를 더 빠르게 실행할 수 있다.
(partitioning column필수) 파티셔닝의 주요 목표는 대형 테이블의 유지 관리를 지원하고 특정 SQL작업에 대한 데이터 읽기 및 로드에 대한 응답시간을 줄이는 것이다. Vertical Partitioning과 Horizontal Partitioning이 있는데, 이 중 Horizontal Partitioning은 Sharding
이라고 부르기도 한다. 이 글 에서는 Horizontal Partitioning(Sharding)에 대해서 다뤄보도록 하겠다.
Horizontal Partitioning Partitioning on SQL Server tables
테이블에 동일한 수의 열을 포함하지만 더 적은 수의 행을 포함하는 여러 테이블로 나누는 기법이다.(샤딩이랑 같은개념)
예를들어, 월별 보고서를 나타내는 행이 많은 경우 연도별로 테이블을 수평 분할한다. 이러한 방법으로 하면 연도별로 테이블을 수평 분할할 수 있고, 각 테이블은 특정 연도에 대한 모든 월간 보고서를 나타낸다. 이렇게 할 경우 특정 연도에 대한 데이터가 필요한 쿼리가 해당 테이블만 참조한다.
분할에 사용될 열과 각 파티션과 연결된 범위를 기반으로 수평 분할된다. 파티셔닝 컬럼은 일반적으로 날짜/시간 컬럼이지만 인덱스 컬럼으로 사용할 수 있는 모든 데이터 타입은 타임스탬프 컬럼을 제외하고 파티션 컬럼으로 사용 할 수 있다. 사용자 정의 형식 및 별칭 데이터 형식 열은 지정할 수 없다.
파티셔닝을 수행하는 데 사용할 수 있는 두가지의 다른 접근 방식이 있다. 첫번째는 분할된 새 테이블을 만든 다음 기존 테이블의 데이터를 새 테이블로 복사하고 테이블의 이름을 바꾸는 것이다. 두번재는 테이블에 클러스터형 인덱스를 다시 작성하거나 생성하여 기존 테이블을 분할하는 방식이다.(이해안됨)
회사에서는 문자 메세지 이력 테이블을 send_dttm을 파티셔닝 컬럼으로 하여 파티셔닝하였다. send_dttm의 컬럼 에서 (YYYY-MM-DD)까지 파티셔닝 컬럼으로 사용하고 있었고, 매일 백만건씩 발송되었기 때문에 일까지를 파티셔닝 컬럼으로 지정한 듯 하였다. 따라서 YYYY-MM-DD를 조회 쿼리에서 조건으로 추가하면 DB풀스캔을 예방하고 특정 일의 문자메세지 data만 접근하여 빠른 응답을 가져올 수 있었다.
https://www.sqlshack.com/database-table-partitioning-sql-server/
Database table partitioning in SQL Server
This article explains what is a database table partitioning, shows examples of horizontal and vertical partitioning on SQL Server tables, and describes how to partition a table using SSMS
www.sqlshack.com
https://www.singlestore.com/blog/database-sharding-vs-partitioning-whats-the-difference/
Database Sharding vs. Partitioning: What’s the Difference?
What’s the difference between database sharding and partitioning
www.singlestore.com
'DB' 카테고리의 다른 글
[SQL] SQL 활용 - 절차형 SQL (0) | 2023.06.18 |
---|---|
[SQL] SQL 활용 - 그룹함수, 윈도우 (0) | 2023.06.10 |
[SQL]SQL 활용 - 계층형 질의,서브쿼리 (2) | 2023.06.09 |
[SQL]SQL활용 - DCL에 대하여 (0) | 2023.06.06 |
[SQL] SQL 활용 - 표준 JOIN과 집합 연산자에 대하여(ANSI) (1) | 2023.06.06 |