반응형
Azure Synapse Analytics 또는 MPP(Massively Parallel Processing) 환경에서 대용량 테이블을 분산 저장할 때 주로 사용하는 세 가지 방식이 있습니다. 이들은 테이블 스캔 성능과 병렬 연산 효율을 결정짓는 핵심 요소입니다.

1. Round Robin 분산
개념
테이블의 각 레코드를 서버 노드(분산 단위)들에 순차적으로 고르게 분배하는 방식입니다.
- 첫 행은 노드1, 둘째 행은 노드2…, 마지막 노드까지 분배 후 다시 노드1로 돌아와 순환.
사용도 & 장점
- 데이터 편향 없이 고르게 분산 → 로드 밸런싱 우수
- 분할 키 설정이 필요 없어 간편
단점 & 유의사항
- 특정 열 기준 검색 시 데이터가 모든 노드를 스캔해야 함 → 네트워크 오버헤드 증가
- 조인·집계 시 분산 키 미지정 상태이므로 셔플(데이터 재분배) 발생
사용 시나리오
- 로딩 단계에서 빠른 데이터 적재가 최우선
- 분석 시 특정 키별 조회가 아닌 전체 테이블 집계 작업 위주
구현 로직(예시)
CREATE TABLE dbo.Sales_RR
(
SalesID INT,
Product NVARCHAR(50),
Amount DECIMAL(10,2)
)
WITH
(
DISTRIBUTION = ROUND_ROBIN
);
반응형
2. Hash 분산
개념
특정 분산 키 열(또는 복합 키)의 해시값을 계산하여 노드에 할당하는 방식입니다.
- 같은 키값은 항상 동일 노드에 위치 → 관련 레코드 로컬 처리 가능
사용도 & 장점
- 키 기반 조인·집계 시 데이터 이동 최소화 → 쿼리 성능 향상
- 대규모 테이블 간 조인 작업 빈도 높은 환경에 적합
단점 & 유의사항
- 분산 키 선택이 매우 중요. 편향된 키 선택 시 특정 노드에 데이터 쏠림(“스키드”)
- 분산 키 변경 불가(테이블 생성 시 결정)
사용 시나리오
- 고객ID, 주문ID 등 널리 사용되는 조건문에 기반한 조인·필터링 빈번
- 월별·지역별 분석 등 그룹핑이 많을 때
구현 로직(예시)
CREATE TABLE dbo.Sales_Hash
(
SalesID INT,
CustomerID INT,
Amount DECIMAL(10,2)
)
WITH
(
DISTRIBUTION = HASH(CustomerID)
);
3. Replicate 분산
개념
작은 테이블 전체를 모든 노드에 복제(Replication)해 두는 방식입니다.
- 모든 노드가 테이블을 로컬로 보유 → 완전 로컬 조인 가능
사용도 & 장점
- 조인 대상 테이블이 소규모인 경우 네트워크 없이 즉시 조인
- 복제본 동기화 비용은 적절히 관리됨
단점 & 유의사항
- 테이블 크기가 크면 복제·동기화 오버헤드 급증
- 저장 공간 효율성 저하
사용 시나리오
- 참조 테이블(상품목록, 지역코드, 설정값 등)
- 드물게 변경되며 조인 빈도가 높은 소규모 테이블
구현 로직(예시)
CREATE TABLE dbo.Dim_Product
(
ProductID INT,
Name NVARCHAR(100),
Category NVARCHAR(50)
)
WITH
(
DISTRIBUTION = REPLICATE
);
분산 방식 선택의 중요성 및 활용
데이터 분산 전략은 쿼리 성능, 네트워크 사용량, 저장 공간 효율을 결정합니다.
- 사용자·개발자 관점: 적절한 분산 키 선택 및 방식 설정을 통해 대규모 데이터 처리 속도를 획기적으로 개선하고 인프라 비용을 절감할 수 있습니다.
- 중요성: 잘못된 분산 방식은 병렬 연산 효율을 떨어뜨려 쿼리 응답 시간을 수십 배까지 증가시킬 수 있습니다.
선택 가이드
- 로딩 속도 최우선 → Round Robin
- 키 기반 조인·필터링 빈번 → Hash (분산 키 신중히 선정)
- 작은 참조 테이블 조인 자주 발생 → Replicate
각 테이블의 특성과 업무 패턴을 고려해 위 분산 방식을 적절히 조합·운영하는 것이 대규모 병렬 분석 환경에서 핵심 성능 튜닝 포인트입니다.
반응형
'● Data Insights > SQL' 카테고리의 다른 글
| SQL Server DB 모니터링 실전: 성능 진단 및 장애 대응 시나리오 (2) | 2025.11.24 |
|---|---|
| SQL 저장 프로시저 최적화 가이드 (3) | 2025.11.19 |
| MSSQL 실행계획과 쿼리 통계: 개념, 중요성, 활용 방법 및 내부 로직 (0) | 2025.11.15 |
| MSSQL 로그인 및 보안 관리 가이드 (0) | 2025.11.14 |
| SQL에서 Stored Procedure 사용 가이드 (0) | 2025.11.08 |