파티션은 데이터를 효율적으로 저장하고 관리하기 위한 기술로, 테이블이나 인덱스를 더 작은 논리적(물리적) 단위로 분할하는 것을 의미한다.
주요 특징
1.성능 향상:
특정 파티션에 대한 쿼리를 실행할 때는 해당 파티션에만 접근하면 되므로 데이터 검색이 빨라질 수 있다.
2.유지 보수 용이성:
대용량 테이블을 파티션으로 나누면 데이터 관리가 용이해진다. 특히, 특정 파티션의 데이터를 백업하거나 삭제하는 작업이 간편해진다.
3.병렬 처리:
파티셔닝은 쿼리를 병렬로 실행할 때 도움이 된다. 각 파티션을 서로 독립적으로 처리될 수 있으므로 병렬 처리를 통해 전체 쿼리의 성능을 향상시킬 수 있다.
*파티션 유형: List partition, Range partition, Hash partition, Composite partition ..
파티션의 특징에 대해 간단히 알아보았고, 이러한 파티션들은 보통 테이블을 생성할 때 테이블에 적용할 수 있다.
Ex >
-- 범위 파티션을 사용한 테이블 생성
CREATE TABLE sales (
product_id INT,
sale_date DATE,
amount DECIMAL(10, 2)
) PARTITION BY RANGE (YEAR(sale_date)) (
PARTITION p0 VALUES LESS THAN (2020),
PARTITION p1 VALUES LESS THAN (2021),
PARTITION p2 VALUES LESS THAN (2022)
);
-- 범위 파티션을 활용하여 특정 기간의 데이터 조회
SELECT *
FROM sales PARTITION (p1)
WHERE YEAR(sale_date) = 2020;
테이블에 파티션 적용하지 않고 파티션으로 데이터 조회하기
위의 내용에서 파티션에 대해 이해했으면 파티션을 사용하는 방법에 대해 알아보자.
일반적으로 테이블을 생성할 때 파티션을 적용하는 방법을 사용해도 되지만 데이터를 조회할 때 SELECT 쿼리에서 파티션을 사용하여 데이터를 조회할 수 있다.
SELECT
sys_id,
salary,
SUM(salary) OVER (PARTITION BY sys_id) AS total_salary
FROM your_table;
이러한 방식으로 윈도우 함수 OVER를 사용하여 원하는 특정 그룹(컬럼)만 묶어 해당 그룹에 대한 계산을 수행할 수 있다.
Group By & Partition By
Partition by를 사용한 윈도우 함수와 Group by를 사용하는 방법은 각각의 목적에 맞게 선택할 수 있다.
Partition By
SELECT
sys_id,
salary,
SUM(salary) OVER (PARTITION BY sys_id) AS total_salary
FROM your_table;
특징
유연성: 윈도우 함수는 각 행에 대해 계산을 수행하므로, 원하는 특정 행 또는 특정 그룹에 대한 계산이 가능하다.
성능: 테이블이 큰 경우에도 윈도우 함수는 각 행에 대한 계산을 효율적으로 처리할 수 있다.
결과 데이터 구조: 윈도우 함수를 사용하면 원본 데이터에 윈도우 함수 결과를 추가하여 결과가 더 넓어질 수 있다.
Group By
SELECT
sys_id,
SUM(salary) AS total_salary
FROM your_table
GROUP BY sys_id;
특징
결과 데이터 구조: 결과 각 그룹당 하나의 레코드만 반환되기 때문에 결과 데이터가 더 간결하게 구성된다.
집계 기능: Count, Avg, Min, Max 등 다양한 집계 함수를 함께 사용할 수 있다.
유연성: 모든 행이 그룹화되어 하나의 결과 행으로 나타나므로, 특정 행에 대한 계산이 윈도우 함수보다 여려울 수 있다.
성능: 테이블을 그룹화하고 집계하는 과정이기 때문에 윈도우 함수보다 선능상의 부담이 있을 수 있다.
어떤 것을 선택해야 할까?
목적과 요구사항에 따라 선택: 각각의 방법은 특정한 사용 사례에 더 적합하다. 윈도우 함수는 각 행에 대한 개별적인 계산이 필요한 경우에 적합하며, GROUP BY는 그룹화된 결과를 얻고자 할 때 적합하다.
성능 고려: 데이터의 크기와 성능 요구사항에 따라 선택되어야 한다. 대규모 테이블에서는 윈도우 함수가 성능면에서 유리할 수 있다.
집계 기능 사용 여부: GROUP BY는 다양한 집계 함수와 함께 사용할 수 있어 더 많은 기능을 제공한다. 만약 간단한 합계나 평균 등의 집계가 목적이라면 GROUP BY가 유용할 수 있다.
종합적으로, 어떤 방법을 선택할지는 실제 사용 사례와 데이터의 특성에 따라 다를 것이며, 성능 튜닝과 가독성을 고려하여 결정해야 한다.
- 끝 -
reference.
https://oracle-base.com/articles/12c/partitioned-external-tables-12cr2
'💾 데이터베이스(Database) > SQL' 카테고리의 다른 글
[SQL] WITH 문법 (feat. recursive) (3) | 2024.02.09 |
---|---|
[SQL] SQL Cookbook - 06. 문자열 작업 (0) | 2023.10.11 |
[SQL] SQL Cookbook - 05. 메타 데이터 쿼리 (0) | 2023.10.04 |
[SQL] SQL Cookbook - 04.삽입, 갱신, 삭제 (0) | 2023.09.18 |
[SQL] SQL Cookbook - 03.다중 테이블 작업 (0) | 2023.09.08 |