SQLD 시험 합격 전략 요약
2장 ‘데이터 모델과 성능’은 정규화와 반정규화의 개념 차이, 반정규화 절차, 파티셔닝 기법, 분산 DB 투명성이 핵심 출제 영역입니다. 특히 “정규화 시 입력/수정/삭제 성능 향상, 반정규화 시 조인 성능 향상”이라는 대원칙을 반드시 기억해야 합니다.
1. 성능 데이터 모델링과 정규화
🔎 초압축 암기 요약
성능 데이터 모델링 순서: 정규화 → 용량산정 → 트랜잭션 파악 → 반정규화 → 이력/PK/FK 조정 → 검증.
정규화는 반복·중복 데이터를 분리하여 각 데이터를 종속된 테이블에 배치하는 것입니다. 정규화는 필수이며, 함수적 종속성에 근거합니다. 정규화 시 입력/수정/삭제 성능이 향상되고, 반정규화 시 조회(조인) 성능이 향상됩니다.
📘 초보자 이해용 상세 설명
정의: 성능 데이터 모델링이란 DB 성능 향상을 목적으로 설계 단계에서부터 정규화, 반정규화, 테이블 분할 등 성능 관련 사항을 데이터 모델에 반영하는 것입니다.
원리: 데이터의 증가가 빠를수록 성능 저하에 따른 개선 비용은 기하급수적으로 증가합니다. 따라서 설계 단계에서 미리 성능을 고려하면 나중에 발생할 비용을 크게 줄일 수 있습니다.
정규화: 반복적인 데이터를 분리하고, 각 데이터가 종속된 테이블에 적절히 배치되도록 하는 과정입니다. 칼럼에 의한 반복이나 중복적인 속성 값을 갖는 형태는 1차 정규화의 대상입니다.
함수적 종속성: 데이터들이 어떤 기준 값에 의해 종속되는 현상입니다. 예를 들어 ‘사원번호’가 결정되면 ‘사원명’이 결정되므로, 사원명은 사원번호에 함수적으로 종속됩니다.
시험 출제 포인트: “정규화는 선택이 아니라 필수”라는 점과, “1차 정규화 대상 = 칼럼에 의한 반복·중복 속성 값”이 자주 출제됩니다.
2. 반정규화
🔎 초압축 암기 요약
반정규화는 성능 향상과 개발 단순화를 위해 중복·통합·분리를 수행하는 기법입니다.
절차: 대상조사 → 다른 방법 검토(뷰, 클러스터링, 인덱스) → 적용. 반정규화 기법은 테이블(병합/분할/추가), 칼럼(중복/파생/이력/오작동), 관계(중복관계 추가) 3가지 범주로 나뉩니다.
📘 초보자 이해용 상세 설명
정의: 반정규화란 정규화된 엔터티, 속성, 관계에 대해 시스템 성능 향상과 운영 단순화를 위해 의도적으로 중복을 허용하거나 테이블을 통합·분리하는 기법입니다.
반정규화 절차 3단계:
- 대상조사: 범위처리빈도수, 범위, 통계성 프로세스를 분석합니다.
- 다른 방법 검토: 뷰(VIEW), 클러스터링, 인덱스 조정, 파티셔닝 등으로 해결 가능한지 먼저 확인합니다.
- 반정규화 적용: 테이블, 속성, 관계 수준에서 반정규화를 수행합니다.
테이블 반정규화 기법:
| 구분 | 기법 | 설명 |
|---|---|---|
| 테이블 병합 | 1:1 관계 통합 | 1:1 관계의 테이블을 하나로 합쳐 성능 향상 |
| 1:M 관계 통합 | 1:M 관계의 테이블을 통합하여 성능 향상 | |
| 슈퍼/서브 통합 | 슈퍼타입과 서브타입을 하나로 통합 | |
| 테이블 분할 | 수직 분할 | 칼럼 단위로 테이블을 1:1 분리하여 디스크 I/O 분산 |
| 수평 분할 | 로우 단위로 테이블을 쪼개어 트랜잭션 효율성 향상 | |
| 테이블 추가 | 중복 테이블 | 원격조인 제거를 위해 동일 구조의 테이블 중복 생성 |
| 통계 테이블 | SUM, AVG 등을 미리 계산하여 조회 성능 향상 | |
| 이력 테이블 | 마스터 레코드를 이력테이블에 중복 저장 | |
| 부분 테이블 | 자주 사용되는 칼럼만 모아 별도 테이블 생성 |
칼럼 반정규화: 중복칼럼 추가(조인 성능 개선), 파생칼럼 추가(미리 계산), 이력테이블 칼럼 추가(최근값 여부, 시작/종료일자 등 기능성 칼럼), 오작동 대비 칼럼 추가(이전 데이터 임시 보관)가 있습니다.
시험 출제 포인트: 반정규화 절차 3단계 순서와, ‘다른 방법 검토’ 단계에서 뷰·클러스터링·인덱스를 먼저 고려한다는 점이 자주 출제됩니다.
3. 테이블 분할과 파티셔닝
🔎 초압축 암기 요약
로우 체이닝은 하나의 로우가 여러 블록에 걸쳐 저장되는 것이고, 로우 마이그레이션은 수정된 데이터가 다른 블록으로 이동하는 것입니다.
파티셔닝 종류: RANGE(날짜/숫자), LIST(핵심 코드값), HASH(해시 알고리즘).
슈퍼/서브타입 변환: OneToOne, Plus, Single(All in One) Type 3가지입니다.
📘 초보자 이해용 상세 설명
로우 체이닝과 로우 마이그레이션: 로우 체이닝은 하나의 행이 너무 길어서 하나의 블록에 다 저장되지 못하고 여러 블록에 걸쳐 저장되는 현상입니다. 로우 마이그레이션은 데이터 수정 시 해당 블록에 공간이 부족하여 다른 블록으로 이동하는 현상입니다. 두 현상 모두 디스크 I/O를 증가시켜 성능 저하를 유발합니다.
파티셔닝 기법:
- RANGE PARTITION: 날짜나 숫자 값 기준으로 분리합니다. 가장 일반적인 방식입니다.
- LIST PARTITION: 지점, 사업소 등 핵심 코드 값으로 분리합니다.
- HASH PARTITION: 해시 알고리즘을 적용하여 자동으로 분리합니다.
해시 알고리즘(Hash Algorithm) : 임의의 길이 데이터를 고정된 길이의 값(해시값)으로 변환하는 알고리즘
슈퍼/서브타입 변환:
- OneToOne Type: 개별 트랜잭션이 발생할 때 → 개별 테이블로 구성
- Plus Type: 슈퍼+서브 트랜잭션이 함께 발생할 때 → 슈퍼+서브 결합 테이블
- Single(All in One) Type: 전체를 하나로 묶어 처리할 때 → 하나의 테이블
시험 출제 포인트: RANGE/LIST/HASH 파티셔닝의 적용 조건을 구분하는 문제와, 슈퍼/서브타입 3가지 변환 기술을 묻는 문제가 출제됩니다.
4. 분산 DB
🔎 초압축 암기 요약
분산 DB의 6가지 투명성: 분할, 위치, 지역사상, 중복, 장애, 병행 투명성.
적용 기법 4가지: 테이블 위치 분산, 분할 분산(수평/수직), 복제 분산(부분/광역), 요약 분산(분석/통합).
장점은 빠른 응답, 단점은 관리 복잡성입니다.
📘 초보자 이해용 상세 설명
정의: 분산 DB는 여러 곳에 흩어져 있는 데이터베이스를 하나의 가상 시스템처럼 사용할 수 있도록 한 것입니다. 논리적으로는 하나의 시스템이지만 물리적으로는 네트워크를 통해 분산되어 있습니다.
6가지 투명성:
| 투명성 | 설명 |
|---|---|
| 분할(단편화) 투명성 | 하나의 논리적 릴레이션이 여러 단편으로 분할되어 각 사본이 여러 site에 저장 |
| 위치 투명성 | 데이터의 저장 장소를 명시할 필요 없음, 위치정보가 시스템 카탈로그에 유지 |
| 지역사상 투명성 | 지역 DBMS와 물리적 DB 사이의 매핑 보장 |
| 중복 투명성 | DB 객체가 여러 site에 중복되어 있는지 알 필요 없음 |
| 장애 투명성 | 구성요소의 장애에 무관하게 트랜잭션의 원자성 유지 |
| 병행 투명성 | 다수 트랜잭션 동시 수행 시 결과의 일관성 유지 |
시험 출제 포인트: 6가지 투명성의 이름과 설명을 정확히 매칭하는 문제가 출제됩니다. 특히 ‘위치 투명성’과 ‘분할 투명성’을 혼동하기 쉬우므로 주의하세요.
🧠 시험 핵심 포인트 정리
- 정규화 = 필수, 함수적 종속성에 근거하여 수행
- 정규화 → 입력/수정/삭제 성능 향상 / 반정규화 → 조회(조인) 성능 향상
- 반정규화 절차: 대상조사 → 다른 방법 검토 → 적용
- 파티셔닝: RANGE(날짜/숫자), LIST(코드값), HASH(해시 알고리즘)
- 슈퍼/서브타입 변환: OneToOne, Plus, Single(All in One)
- 분산 DB 6가지 투명성: 분할, 위치, 지역사상, 중복, 장애, 병행
- PK 인덱스: 앞쪽 속성 값이 ‘=’ 또는 BETWEEN 조건이어야 효율적
❓ 기본 확인문제
문제 1. 다음 중 정규화에 대한 설명으로 올바른 것은?
① 정규화는 선택 사항이다
② 정규화 시 조회 성능이 향상된다
③ 정규화는 함수적 종속성에 근거한다
④ 반정규화 후에 정규화를 수행한다
문제 2. 반정규화 절차의 올바른 순서는?
① 적용 → 대상조사 → 다른 방법 검토
② 다른 방법 검토 → 대상조사 → 적용
③ 대상조사 → 다른 방법 검토 → 적용
④ 대상조사 → 적용 → 다른 방법 검토
문제 3. 날짜 또는 숫자값으로 테이블을 분리하는 파티셔닝 기법은?
① HASH PARTITION ② LIST PARTITION ③ RANGE PARTITION ④ KEY PARTITION
문제 4. 분산 DB의 투명성 중 데이터의 저장 장소를 명시할 필요가 없는 것은?
① 분할 투명성 ② 위치 투명성 ③ 중복 투명성 ④ 병행 투명성
문제 5. 다음 중 칼럼 반정규화 기법에 해당하지 않는 것은?
① 중복칼럼 추가 ② 파생칼럼 추가 ③ 중복테이블 추가 ④ 이력테이블 칼럼 추가
✅ 기본문제 해설
1. 정답: ③ — 정규화는 함수적 종속성에 근거하여 수행하며, 필수 사항입니다. 정규화 시에는 입력/수정/삭제 성능이 향상되고, 조회(조인) 성능 향상은 반정규화의 효과입니다.
2. 정답: ③ — 반정규화 절차는 대상조사 → 다른 방법유도 검토(뷰, 클러스터링, 인덱스 조정) → 반정규화 적용 순서입니다.
3. 정답: ③ — RANGE PARTITION은 날짜 또는 숫자값으로 분리 가능하고, 각 영역별로 트랜잭션이 분리되는 경우에 사용합니다.
4. 정답: ② — 위치 투명성은 사용하려는 데이터의 저장 장소를 명시할 필요가 없으며, 위치정보가 시스템 카탈로그에 유지됩니다.
5. 정답: ③ — 중복테이블 추가는 ‘테이블 반정규화’에 해당합니다. 칼럼 반정규화는 중복칼럼 추가, 파생칼럼 추가, 이력테이블 칼럼 추가, 오작동 대비 칼럼 추가입니다.
🔥 고난도 확인문제
문제 1. 로우의 길이가 너무 길어서 하나의 데이터 블록에 저장되지 않고 두 개 이상의 블록에 걸쳐 저장되는 현상은?
① 로우 마이그레이션 ② 로우 체이닝 ③ 로우 파티셔닝 ④ 로우 클러스터링
문제 2. 슈퍼/서브타입 데이터 모델에서, 전체를 하나로 묶어 트랜잭션이 발생할 때 하나의 테이블로 구성하는 방식은?
① OneToOne Type ② Plus Type ③ Single Type ④ Merge Type
문제 3. 반정규화를 적용하기 전에 먼저 검토해야 할 대안 방법으로 적절하지 않은 것은?
① VIEW 사용 ② 클러스터링 적용 ③ 테이블 삭제 ④ 인덱스 조정
🧩 고난도 해설
1. 정답: ②
로우 체이닝은 하나의 로우가 너무 길어서 하나의 블록에 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 저장되는 현상입니다. 반면 로우 마이그레이션은 데이터 수정 시 해당 블록에 공간이 부족하여 다른 블록으로 이동하는 현상입니다. 두 현상 모두 디스크 I/O를 증가시켜 성능 저하를 일으킵니다.
2. 정답: ③
Single Type(All in One Type)은 슈퍼타입과 서브타입 전체를 하나의 테이블로 통합하는 방식입니다. OneToOne은 개별 테이블로 구성, Plus Type은 슈퍼+서브를 결합한 테이블로 구성합니다. 트랜잭션 유형에 따라 적절한 변환 방식을 선택해야 합니다.
3. 정답: ③
반정규화 전에 검토해야 할 대안 방법은 VIEW 사용, 클러스터링 적용, 인덱스 조정, 파티셔닝 기법, 응용 애플리케이션 로직 변경입니다. ‘테이블 삭제’는 반정규화 대안 방법이 아닙니다. 반정규화는 성능 개선을 위한 것이지 데이터를 없애는 것이 아닙니다.
다음 편 예고
다음 3편에서는 SQLD 2과목의 시작인 ‘SQL 기본 – DDL, DML, TCL’을 다룹니다. CREATE TABLE, ALTER TABLE 등 DDL 문법부터 INSERT, UPDATE, DELETE의 DML, 그리고 트랜잭션 제어까지 실전 SQL 문법을 정리합니다.
