SQLD 자격증 1과목 핵심 요약 – 데이터 모델과 성능 총정리 + 기출문제 (2편)

SQLD 시험 고득점을 위한 '데이터 모델과 성능' 파트를 완벽 정리합니다. 정규화, 반정규화, 파티셔닝, 분산 DB까지 합격에 필요한 핵심 개념과 실전 문제를 확인하세요.

SQLD 시험 합격 전략 요약

2장 ‘데이터 모델과 성능’은 정규화와 반정규화의 개념 차이, 반정규화 절차, 파티셔닝 기법, 분산 DB 투명성이 핵심 출제 영역입니다. 특히 “정규화 시 입력/수정/삭제 성능 향상, 반정규화 시 조인 성능 향상”이라는 대원칙을 반드시 기억해야 합니다.


1. 성능 데이터 모델링과 정규화

🔎 초압축 암기 요약

성능 데이터 모델링 순서: 정규화 → 용량산정 → 트랜잭션 파악 → 반정규화 → 이력/PK/FK 조정 → 검증.

정규화는 반복·중복 데이터를 분리하여 각 데이터를 종속된 테이블에 배치하는 것입니다. 정규화는 필수이며, 함수적 종속성에 근거합니다. 정규화 시 입력/수정/삭제 성능이 향상되고, 반정규화 시 조회(조인) 성능이 향상됩니다.

📘 초보자 이해용 상세 설명

정의: 성능 데이터 모델링이란 DB 성능 향상을 목적으로 설계 단계에서부터 정규화, 반정규화, 테이블 분할 등 성능 관련 사항을 데이터 모델에 반영하는 것입니다.

원리: 데이터의 증가가 빠를수록 성능 저하에 따른 개선 비용은 기하급수적으로 증가합니다. 따라서 설계 단계에서 미리 성능을 고려하면 나중에 발생할 비용을 크게 줄일 수 있습니다.

정규화: 반복적인 데이터를 분리하고, 각 데이터가 종속된 테이블에 적절히 배치되도록 하는 과정입니다. 칼럼에 의한 반복이나 중복적인 속성 값을 갖는 형태는 1차 정규화의 대상입니다.

함수적 종속성: 데이터들이 어떤 기준 값에 의해 종속되는 현상입니다. 예를 들어 ‘사원번호’가 결정되면 ‘사원명’이 결정되므로, 사원명은 사원번호에 함수적으로 종속됩니다.

시험 출제 포인트: “정규화는 선택이 아니라 필수”라는 점과, “1차 정규화 대상 = 칼럼에 의한 반복·중복 속성 값”이 자주 출제됩니다.


2. 반정규화

🔎 초압축 암기 요약

반정규화는 성능 향상과 개발 단순화를 위해 중복·통합·분리를 수행하는 기법입니다.

절차: 대상조사 → 다른 방법 검토(뷰, 클러스터링, 인덱스) → 적용. 반정규화 기법은 테이블(병합/분할/추가), 칼럼(중복/파생/이력/오작동), 관계(중복관계 추가) 3가지 범주로 나뉩니다.

📘 초보자 이해용 상세 설명

정의: 반정규화란 정규화된 엔터티, 속성, 관계에 대해 시스템 성능 향상과 운영 단순화를 위해 의도적으로 중복을 허용하거나 테이블을 통합·분리하는 기법입니다.

반정규화 절차 3단계:

  1. 대상조사: 범위처리빈도수, 범위, 통계성 프로세스를 분석합니다.
  2. 다른 방법 검토: 뷰(VIEW), 클러스터링, 인덱스 조정, 파티셔닝 등으로 해결 가능한지 먼저 확인합니다.
  3. 반정규화 적용: 테이블, 속성, 관계 수준에서 반정규화를 수행합니다.

테이블 반정규화 기법:

구분기법설명
테이블 병합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가지 투명성의 이름과 설명을 정확히 매칭하는 문제가 출제됩니다. 특히 ‘위치 투명성’과 ‘분할 투명성’을 혼동하기 쉬우므로 주의하세요.


🧠 시험 핵심 포인트 정리

  1. 정규화 = 필수, 함수적 종속성에 근거하여 수행
  2. 정규화 → 입력/수정/삭제 성능 향상 / 반정규화 → 조회(조인) 성능 향상
  3. 반정규화 절차: 대상조사 → 다른 방법 검토 → 적용
  4. 파티셔닝: RANGE(날짜/숫자), LIST(코드값), HASH(해시 알고리즘)
  5. 슈퍼/서브타입 변환: OneToOne, Plus, Single(All in One)
  6. 분산 DB 6가지 투명성: 분할, 위치, 지역사상, 중복, 장애, 병행
  7. 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 문법을 정리합니다.

댓글 남기기