문서 읽는 데 37분 · 30강 · 3과목 · 데이터베이스 구축

고급 데이터베이스

목차 16
전체 59강 중 30강 · 3과목 · 데이터베이스 구축

큰 테이블 하나를 효율적으로 다루는 세 가지 고급 도구 — VIEW(추상화)·INDEX(검색 가속)·파티셔닝(병행성 분산)을 함께 정리한다. 3과목에서 매년 0~1문항 출제되는 방어 단원이지만, 나오는 함정이 거의 굳어 있어 한 번 걸러내는 눈만 만들면 가져가는 점수다.

핵심 암기: VIEW 4대 특성 가물독기(가상·물리 저장❌·독자 인덱스❌·기본 테이블 의존) · INDEX 트레이드오프(SELECT↑ / 변경 3종↓ / 저장 공간↑) · 자료구조 B+Tree(범위✅)·해시(등호만)·비트맵(낮은 카디) · 파티셔닝 4종 범해리복(범위·해시·리스트·복합) · 수평=행 / 수직=열 · 3분별 한·여·복(파티 한 DB·병행 / 샤딩 여러 DB·확장 / 클러스터링 복제·가용)


VIEW (가상 테이블)

VIEW 정의와 가물독기 4대 특성 ·VIEW·1순위·

[정의] VIEW(뷰) = 하나 이상의 기본 테이블에 정의된 SELECT 문에 이름을 붙인 가상의 테이블. 데이터를 따로 저장하지 않고, 조회할 때마다 그 SELECT를 다시 실행해 결과를 보여준다.

[표] ★가물독기★ — 4대 특성.

글자 특성 핵심
가상 테이블 실체는 SELECT 정의문뿐
물리 저장 ❌ 정의문만 데이터 사전에 보관·매번 SELECT 재실행
독자 인덱스 ❌ 자기 인덱스 없음·기본 테이블 인덱스를 빌려 사용
기본 테이블 의존 기본 테이블이 삭제되면 뷰도 함께 사라짐
SQL
CREATE VIEW active_students AS
SELECT student_id, name, dept_id
FROM   student
WHERE  status = 'ACTIVE';
  • 뷰 정의는 결국 27강에서 본 SELECT 문 그 자체다(프위그해셀오에 이름을 붙인 것). 그래서 뷰가 할 수 있는 일은 SELECT가 할 수 있는 범위 안에 갇힌다.

🔑 암기 가·물·독·기 — 가상·물리❌·독자 인덱스❌·기본 의존. ⚠️ 함정 "VIEW에 CREATE INDEX 가능" ❌(→ 독자 인덱스 없음·'독') / "VIEW가 디스크에 데이터를 따로 저장" ❌(→ 정의문만 보관·'물'). 🎯 빈출 VIEW 설명 중 틀린 것 고르기. 거의 매회 '독자 인덱스 생성 가능'이 오답으로 끼어든다. 💡 보충 실무에선 민감 컬럼(계좌·결제)을 뺀 뷰만 특정 계정에 권한으로 주는 보안 마스킹에 자주 쓴다.

VIEW 갱신 가능성 — 단순 SELECT만 ·VIEW·

[정의] 뷰에 INSERT·UPDATE·DELETE를 할 수 있는지는 조건이 까다롭다. 판정 원리는 한 줄 — 뷰의 한 행이 기본 테이블의 한 행과 1:1로 대응될 때만 갱신 가능하다.

[표] 갱신 가능 여부.

뷰 정의 형태 갱신 이유
단순 SELECT(한 테이블·WHERE만) 기본 테이블 행과 1:1 대응
JOIN 뷰(2개 이상 결합) 어느 기본 테이블에 반영할지 모호
집계 함수(SUM·COUNT·AVG) 원본 행과 1:1 대응 안 됨
GROUP BY · DISTINCT · UNION 원본 행과 1:1 대응 안 됨
  • COUNT(*)로 묶인 한 행에 INSERT를 시키면 DBMS는 그 값을 원본 어느 행으로 풀어야 할지 알 수 없다. 그래서 집계·그룹 뷰는 갱신이 막힌다.

🔑 암기 단순 SELECT 한 테이블만 ✅ / JOIN·집계·GROUP BY 끼면 전부 ❌. ⚠️ 함정 "GROUP BY 뷰에 INSERT 가능" ❌ / "집계 뷰에 UPDATE 가능" ❌ — 보기에 JOIN·집계·GROUP BY가 보이면 무조건 갱신 불가. 🎯 빈출 갱신 가능한 뷰/불가능한 뷰 고르기. 1:1 대응 한 줄이면 즉답.

VIEW 활용 3종과 DROP CASCADE / RESTRICT ·VIEW·

[표] 뷰를 쓰는 이유 3가지 — 한마디로 추상화 계층.

# 활용 한 줄
복잡한 SELECT 단순화 여러 테이블 JOIN을 뷰 이름 하나로 즉시 조회
보안 컬럼 마스킹 민감 컬럼 뺀 뷰에만 권한 부여
논리적 데이터 독립성 기본 테이블 구조가 바뀌어도 뷰가 인터페이스를 유지

[표] DROP VIEW 옵션 (26강 DROP CASCADE/RESTRICT 회수).

옵션 동작
RESTRICT 의존하는 객체가 하나라도 있으면 삭제 거부 (기본값·안전)
CASCADE 이 뷰에 의존하는 다른 뷰·제약까지 연쇄 삭제
SQL
CREATE VIEW v2 AS SELECT * FROM v1 WHERE dept_id = 'D01';
DROP VIEW v1 RESTRICT;   -- v2가 v1에 의존 → 거부
DROP VIEW v1 CASCADE;    -- v1, v2 연쇄 삭제
  • 26강에서 본 대로 DROP의 CASCADE/RESTRICT 구문은 TABLE이든 VIEW든 동일하고, 디폴트는 보수적인 RESTRICT다.

🔑 암기 RESTRICT = 의존 있으면 거부(디폴트) / CASCADE = 연쇄 삭제. ⚠️ 함정 "DROP VIEW 디폴트는 CASCADE" ❌(→ RESTRICT). 가물독기의 '기' — 기본 테이블이 DROP되면 뷰도 함께 사라진다. 🎯 빈출 뷰 활용 목적 고르기, DROP 옵션 동작 매칭. 보통.


INDEX (인덱스)

INDEX 정의와 트레이드오프 ·INDEX·1순위·

[정의] INDEX(인덱스) = 검색 속도를 높이려고 컬럼 기준으로 정렬된 키 + 행 위치 포인터를 디스크에 따로 저장한 자료구조. VIEW가 추상화 계층이라면 인덱스는 검색 가속 계층이다.

[표] ★트레이드오프 — 시험 1순위★.

영향 방향 이유
SELECT(검색) ↑ 빨라짐 O(log n)·인덱스의 본질 목적
INSERT ↓ 느려짐 테이블 행 + 모든 인덱스에 키 추가
UPDATE(인덱스 컬럼) ↓ 느려짐 인덱스 키 재정렬 비용
DELETE ↓ 느려짐 테이블 행 + 인덱스 키 삭제
저장 공간 ↑ 증가 테이블의 10~30% 추가
SQL
CREATE INDEX idx_student_name ON student(name);
CREATE UNIQUE INDEX idx_email ON member(email);
DROP INDEX idx_student_name;
  • PK 제약·UNIQUE 제약에는 인덱스가 자동으로 생성된다.
  • INSERT 한 번에 (1)테이블 행 추가 + (2)관련 인덱스 전부 갱신이 29강의 트랜잭션(원일고영)으로 한꺼번에 처리된다. 인덱스가 많을수록 변경 트랜잭션이 길어지고 락 보유 시간도 늘어난다.

🔑 암기 SELECT↑ / 변경 3종(INSERT·UPDATE·DELETE)↓ / 저장 공간↑. 인덱스는 공짜가 아닌 거래. ⚠️ 함정 "인덱스가 많을수록 모든 SQL이 빨라짐" ❌(→ 변경은 느려짐) / "인덱스는 디스크를 절약한다" ❌(→ 추가 공간 필요). 🎯 빈출 인덱스 설명 중 옳은/틀린 것 고르기. '변경이 빨라진다'는 보기는 무조건 함정.

INDEX 자료구조 4종 ·INDEX·

[표] 같은 인덱스라도 내부 자료구조에 따라 잘하는 일이 다르다.

자료구조 검색 범위 검색 특징
B+Tree O(log n) ✅ 가능 DBMS 표준·리프 노드를 연결 리스트로 묶어 범위 스캔
B-Tree O(log n) △ 일부 균형 다중 트리·리프 연결 ❌
해시 O(1) ❌ 불가 등호 검색만·해시 함수 기반(순서 보존 ❌)
비트맵 비트 연산 △ AND/OR 낮은 카디널리티·주로 DW(데이터 웨어하우스)
텍스트
            [50]               루트
          /      \
     [20,35]    [70,85]        내부 노드
     / | \       / | \
   [ ][ ][ ]   [ ][ ][ ]       리프(연결 리스트로 양옆 연결)
   ───────────────────  범위 검색: 시작 리프만 찾으면 옆으로 쭉
  • B+Tree가 표준인 이유 — 리프끼리 옆으로 연결돼 WHERE age BETWEEN 20 AND 35 같은 범위 검색이 빠르고, 트리 높이가 항상 균형이라 O(log n)이 보장된다.

🔑 암기 B+Tree=표준·범위✅ / 해시=등호만(O(1)) / 비트맵=낮은 카디·DW. ⚠️ 함정 "B-Tree = Binary Tree" ❌(→ Balanced Tree) / "해시 인덱스로 범위 검색 빠름" ❌(→ 순서 보존 안 해 등호만) / "비트맵 = OLTP 표준" ❌(→ DW·OLAP). 🎯 빈출 범위 검색에 적합한 자료구조(→ B+Tree), B-Tree 약어 의미(→ Balanced). 매회 1순위 함정.

클러스터형 vs 비클러스터형 인덱스 ·INDEX·

[표] 개수 함정이 짝으로 출제된다.

구분 클러스터형(Clustered) 비클러스터형(Non-Clustered)
개수 테이블당 1개만 여러 개 가능(N개)
자동 생성 PK 제약에 자동 UNIQUE 제약에 자동
저장 테이블 데이터가 인덱스 순서로 물리 정렬 인덱스가 본체와 별도(포인터로 연결)
검색 빠름(정렬된 본체 = 인덱스) 한 번 더 점프(인덱스→본체)
  • 클러스터형이 1개뿐인 이유 — 테이블 데이터를 그 순서로 물리 정렬하는 것이라, 한 테이블을 두 가지 순서로 동시에 줄 세울 수 없다.
  • 용어 함정 1순위 — '클러스터형 인덱스'(인덱스 종류·PK·1개·물리 정렬)와 'DB 클러스터링'(서버 복제·가용성)은 완전히 다른 개념이다. 같은 '클러스터'라는 단어 때문에 가장 자주 헷갈린다.

🔑 암기 PK 자동=클러스터형=1개(물리 정렬) / UNIQUE 자동=비클러스터형=N개(별도). ⚠️ 함정 "클러스터형 인덱스는 한 테이블에 여러 개" ❌(→ 1개) / "비클러스터형은 1개만" ❌(→ N개) / "클러스터형 인덱스 = DB 클러스터링" ❌(→ 다른 개념). 🎯 빈출 개수(1개 vs N개), PK/UNIQUE 매칭. 짝으로 출제.

카디널리티와 INDEX 선정 기준 ·INDEX·

[정의] 카디널리티(Cardinality) = 한 컬럼의 고유 값 개수. student_id(전부 다름)는 높고, gender(M/F 둘뿐)는 낮다.

[표] 카디널리티와 인덱스 적합성.

카디널리티 예시 B+Tree 인덱스
매우 높음 student_id·email ✅ 최적
중간 dept_id·카테고리 △ 선택적
낮음 gender·status ❌ 비효율(비트맵·DW)
  • 카디가 낮은 컬럼은 인덱스를 타도 테이블 절반 이상을 훑게 돼 오히려 느리다. 성별에 인덱스를 걸어도 'M' 검색이 전체 절반을 잡으니 옵티마이저가 풀 스캔으로 우회한다.

[표] 인덱스 선정 — 걸어야 할 곳 vs 말아야 할 곳.

인덱스 ✅ 인덱스 ❌
WHERE·JOIN 키에 자주 등장 카디 낮은 컬럼(성별·상태)
ORDER BY·GROUP BY 컬럼 자주 변경되는 컬럼
카디 높은 컬럼 행이 수십 개뿐인 작은 테이블(풀 스캔이 빠름)

🔑 암기 카디 높고 자주 검색되는 컬럼에만. ⚠️ 함정 "성별에 B+Tree 만들면 효율적" ❌(→ 카디 낮아 비효율) / "인덱스는 많을수록 좋다" ❌(→ 변경 비용만 증가). 🎯 빈출 인덱스 적합 컬럼 고르기. 보통.


파티셔닝과 분산 데이터베이스

수평 분할 vs 수직 분할 ·파티셔닝·1순위·

[정의] 파티셔닝(Partitioning) = 하나의 큰 테이블을 한 DB 안에서 여러 조각(파티션)으로 나눠 저장·관리하는 기법. 응용 프로그램에는 여전히 하나의 테이블로 보이지만, DBMS 내부에서는 여러 파티션에 분산된다.

[표] 분할 방향 — 시험 1순위 함정.

구분 수평 분할(Horizontal) 수직 분할(Vertical)
기준 행(Row) 단위 열(Column) 단위
예시 사용자를 지역·날짜별로 분산 자주 보는 열과 드문 열을 분리
파티셔닝 4종 여기에 속함(수평 안의 4가지) 해당 없음
텍스트
[ 수평 분할 — 행(Row) 단위 ]
  파티션 1  지역 = 서울 (100행)
  파티션 2  지역 = 부산 (80행)
  파티션 3  지역 = 대구 (50행)
   케이크를 가로로 슬라이스 (행 묶음을 나눔)

[ 수직 분할 — 열(Column) 단위 ]
  열 그룹 A  id · 이름 (자주 조회)
  열 그룹 B  결제정보 · 주소 (드물게/민감)
   케이크를 세로로 자름 (열 묶음을 나눔)

🔑 암기 수평=행(가로 슬라이스) / 수직=열(세로 자르기). 'horizontal=지평선=옆으로 누운 행'으로 연결. ⚠️ 함정 "수평 분할 = 열 단위" ❌(→ 행 단위). 방향을 정반대로 뒤집은 보기가 1순위. 🎯 빈출 수평/수직 방향 매칭. 파티셔닝 4종이 수평 안에 속한다는 것까지.

범해리복 — 파티셔닝 4종 ·파티셔닝·핵심 두문자·

[정의] 파티셔닝(수평 분할) 4종을 범해리복 네 글자로 묶는다. 네 종류 모두 수평 분할(행 단위) 안의 분류다.

[표] ★범해리복★.

글자 종류 분할 기준 예시
범위(Range) 값의 범위·구간 월별 파티션·ID 1000 단위
해시(Hash) 해시 함수로 균등 분산 사용자 ID 해시 → 16 버킷
리스트(List) 명시한 값 목록·이산 값 지역(서울·부산)·등급 코드
복합(Composite) 두 가지 방식 조합 Range+Hash·Range+List
SQL
CREATE TABLE orders (order_id BIGINT, order_date DATE)
PARTITION BY RANGE (order_date) (
    PARTITION p_2026_01 VALUES LESS THAN ('2026-02-01'),
    PARTITION p_2026_02 VALUES LESS THAN ('2026-03-01')
);
ALTER TABLE orders DROP PARTITION p_2025_01;  -- 오래된 파티션 일괄 제거
  • 마지막 줄처럼 오래된 데이터를 행 하나씩 DELETE하지 않고 파티션째 떼어내는 것이 파티셔닝의 관리 편의성이다.

🔑 암기 범(구간)·해(해시·균등·등호만)·리(명시 값·이산)·복(두 방식 조합). '범죄자가 해리를 복수한다.' ⚠️ 함정 "해시 파티셔닝으로 범위 검색이 빠르다" ❌(→ 등호만) / "리스트 파티셔닝은 연속 값을 나눈다" ❌(→ 이산 값) / 보기에 트리·정규화처럼 네 글자 밖 단어가 끼면 그게 정답(파티셔닝 아님). 🎯 빈출 파티셔닝 종류가 아닌 것 고르기. 보기 순서만 매년 뒤바뀐다.

파티셔닝의 효과 — 병행성 강화 ·파티셔닝·

[표] 파티셔닝을 걸면 좋아지는 4가지. 용량만 나누는 게 아니라는 점이 포인트다.

# 효과 한 줄
검색 성능 파티션 프루닝 — WHERE 절로 불필요한 파티션은 건너뜀
관리 편의 DROP PARTITION으로 오래된 데이터 일괄 제거
병행성 강화 락 경합이 파티션별로 분산 → 동시 처리량 증가
부분 가용성 한 파티션에 장애가 나도 다른 파티션은 정상
텍스트
[ 파티셔닝 ❌ — 단일 테이블 ]
  T1 ─ X락(orders) 보유
  T2 ─ 대기            다른 행이라도 한 테이블 락에 묶여 대기

[ 파티셔닝 ✅ — 적용 후 ]
  T1 ─ X락(orders.p_01) ─ 진행
  T2 ─ X락(orders.p_02) ─ 진행   다른 파티션이라 동시에 독립 진행
  • 29강에서 본 격리성(ACID의 'I')은 병행 제어로 구현되고, 로킹 단위가 작을수록 병행성이 올라갔다. 파티셔닝은 테이블 전체가 아니라 파티션 단위로 락이 잡혀 로킹 단위를 자연스럽게 줄이는 효과를 낸다 — 그래서 병행성·격리성이 강화된다.

🔑 암기 파티셔닝 효과 = 검색·관리·병행성·가용성 / 핵심은 병행성 강화(락 경합 분산). ⚠️ 함정 "파티셔닝은 검색 속도만 향상시킨다" ❌(→ 병행성·동시 처리도 강화). 효과 보기에 병행성·동시성 강화가 보이면 ✅. 🎯 빈출 파티셔닝 효과 고르기. 병행성 강화가 정답 키워드.

3분별 — 파티셔닝 vs 샤딩 vs 클러스터링 ·분산 DB·

[표] 이름이 비슷한 세 기법을 범위·목적으로 가른다.

구분 파티셔닝 샤딩 클러스터링
범위 한 DB 안 여러 DB 사이 여러 서버(같은 DB 복제)
분할 수평(범해리복) 수평(샤드 키) 분할 없음(복제)
목적 병행성 확장성(Scale-out) 가용성(HA·Failover)
  • 샤딩 — 데이터를 샤드 키 기준으로 여러 DB에 나눠 저장. 단일 DB의 한계를 넘기 위함 → 확장성.
  • 클러스터링 — 여러 서버에 같은 DB를 복제. 한 서버가 죽어도 자동 대체(Failover) → 가용성.
텍스트
파티셔닝    — 한 단지 안에서 동·호수 그룹으로 나눔 (관리사무소 = DB 하나)
샤딩        — 서로 다른 동네에 다른 단지 (관리사무소 = DB 여러 개)
클러스터링  — 같은 단지를 여러 곳에 통째로 복제 (한 곳 무너져도 백업 생존)

🔑 암기 한·여·복 — 파티(한 DB·병행) / 샤딩(여러 DB·확장) / 클러스터링(복제·가용). ⚠️ 함정 "파티셔닝 = 샤딩" ❌(→ 한 DB vs 여러 DB) / "클러스터링 = 분할" ❌(→ 복제) / "클러스터형 인덱스 = 클러스터링" ❌(→ 완전히 다른 개념). 🎯 빈출 목적(가용성/확장성/병행성)으로 기법 찾기. 한·여·복 세 글자면 즉답. 💡 보충 대규모 서비스는 셋을 함께 쓴다 — 샤드 키로 여러 DB에 나누고(샤딩), 각 DB를 복제해 가용성을 챙기고(클러스터링), 각 DB 안에서 다시 범위 파티셔닝을 건다. 경쟁이 아니라 보완 관계다.


기출 다지기

[기출 1 출제] 다음 중 VIEW에 대한 설명으로 옳지 않은 것은? (VIEW 특성)

  • ① 하나 이상의 기본 테이블에서 유도되는 가상의 테이블이다.
  • ② VIEW에는 독자적인 인덱스를 생성할 수 있다.
  • ③ 정의된 기본 테이블이 삭제되면 VIEW도 자동으로 삭제된다.
  • ④ VIEW의 정의는 ALTER로 변경할 수 없고, DROP 후 다시 CREATE해야 한다.
정답 및 해설 보기

정답 ②

VIEW는 자기만의 인덱스를 갖지 못한다(가물독기의 '독'). 기본 테이블의 인덱스를 빌려 쓸 뿐이다.

보기 판정 가물독기
① 가상 테이블 '가'
② 독자 인덱스 생성 가능 '독' 함정 → 정답(틀림)
③ 기본 테이블 삭제 시 자동 삭제 '기'
④ ALTER 불가·DROP 후 재생성 정의 변경은 재생성

🔑 암기 가·물·독·기 — 가상·물리❌·독자 인덱스❌·기본 의존.

[기출 2 출제] 다음 중 갱신(INSERT·UPDATE·DELETE)이 가능한 뷰는? (VIEW 갱신)

  • ① 두 테이블을 JOIN해 만든 뷰
  • ② COUNT(*) 집계를 포함한 뷰
  • ③ 한 테이블에 WHERE 조건만 건 단순 SELECT 뷰
  • ④ GROUP BY로 그룹화한 뷰
정답 및 해설 보기

정답 ③

뷰의 한 행이 기본 테이블의 한 행과 1:1로 대응될 때만 갱신할 수 있다. 단순 SELECT(한 테이블·WHERE만)가 여기에 해당한다.

보기 판정 이유
① JOIN 뷰 어느 기본 테이블에 반영할지 모호
② 집계 뷰 원본 행과 1:1 대응 안 됨
③ 단순 SELECT 1:1 대응 → 정답
④ GROUP BY 뷰 원본 행과 1:1 대응 안 됨

🔑 암기 단순 SELECT 한 테이블만 ✅ / JOIN·집계·GROUP BY 끼면 전부 ❌.

[기출 3 출제] 다음 중 INDEX에 대한 설명으로 옳은 것은? (INDEX 트레이드오프)

  • ① INDEX를 많이 생성할수록 INSERT·UPDATE 성능이 향상된다.
  • ② B+Tree 인덱스는 등호 검색만 가능하고 범위 검색은 불가능하다.
  • ③ 카디널리티가 낮은 컬럼에 B+Tree 인덱스를 만들면 가장 효율적이다.
  • ④ PK 제약을 지정하면 해당 컬럼에 인덱스가 자동으로 생성된다.
정답 및 해설 보기

정답 ④

PK 제약을 걸면 인덱스가 자동 생성된다(클러스터형). 나머지는 트레이드오프·자료구조·카디널리티 함정이다.

보기 판정 이유
① 변경 빨라짐 변경(INSERT·UPDATE·DELETE)은 오히려 느려짐
② B+Tree 등호만 B+Tree는 범위 ✅ / 등호만은 해시
③ 낮은 카디 효율 비효율 → 비트맵(DW) 영역
④ PK 자동 인덱스 PK→클러스터형 1개 → 정답

🔑 암기 SELECT↑ / 변경 3종↓ / PK 자동 클러스터형 1개·UNIQUE 자동 비클러스터형 N개.

[기출 4 출제] WHERE age BETWEEN 20 AND 35 같은 범위 검색에 가장 적합한 인덱스 자료구조는? (자료구조)

  • ① 해시 인덱스
  • ② B+Tree 인덱스
  • ③ 비트맵 인덱스
  • ④ 역인덱스
정답 및 해설 보기

정답 ②

B+Tree는 리프 노드끼리 연결 리스트로 묶여 있어, 시작 키만 찾으면 리프를 따라가며 범위를 쭉 긁어온다.

자료구조 등호 범위 적용
B+Tree DBMS 표준 → 정답
해시 등호 전용(O(1))
비트맵 낮은 카디·DW
역인덱스 검색엔진 전용(범위 ❌)

🔑 암기 B+Tree=표준·범위✅ / 해시=등호만 / 비트맵=낮은 카디(DW). 해시 범위 검색은 절대 ❌.

[기출 5 출제] 클러스터형 인덱스와 비클러스터형 인덱스에 대한 설명으로 옳지 않은 것은? (클러스터형 인덱스)

  • ① 클러스터형 인덱스는 테이블당 1개만 생성된다.
  • ② 클러스터형은 PK 제약, 비클러스터형은 UNIQUE 제약에 자동 생성된다.
  • ③ 클러스터형 인덱스는 테이블 데이터를 인덱스 순서로 물리 정렬한다.
  • ④ 비클러스터형 인덱스는 테이블당 1개만 생성된다.
정답 및 해설 보기

정답 ④

비클러스터형 인덱스는 여러 개(N개) 생성할 수 있다. 1개만 생성되는 것은 클러스터형이다.

보기 판정 이유
① 클러스터형 1개 물리 정렬은 한 순서만 가능
② PK→클러스터형·UNIQUE→비클러스터형 자동 생성 규칙
③ 인덱스 순서로 물리 정렬 클러스터형의 정의
④ 비클러스터형 1개만 N개 가능 → 정답(틀림)

🔑 암기 PK 자동=클러스터형=1개 / UNIQUE 자동=비클러스터형=N개.

[기출 6 출제] 다음 중 파티셔닝에 대한 설명으로 옳지 않은 것은? (파티셔닝)

  • ① 하나의 큰 테이블을 한 DB 안에서 여러 파티션으로 나눈다.
  • ② 수평 분할은 열(Column) 단위로 데이터를 나누는 방식이다.
  • ③ 종류로는 범위·해시·리스트·복합이 있다.
  • ④ DROP PARTITION으로 오래된 데이터를 일괄 제거할 수 있다.
정답 및 해설 보기

정답 ②

수평 분할은 행(Row) 단위다. 열(Column) 단위는 수직 분할이다. 방향을 뒤집은 1순위 함정.

보기 판정 이유
① 한 DB 안 분할 파티셔닝의 정의
② 수평=열 단위 수평은 행 단위 → 정답(틀림)
③ 범해리복 4종 범위·해시·리스트·복합
④ DROP PARTITION 일괄 제거 관리 편의성

🔑 암기 수평=행 / 수직=열 · 4종=범해리복.

[기출 7 출제] 분산 데이터베이스 환경에서 가용성(HA) 확보를 주 목적으로 하는 기법은? (분산 DB 분별)

  • ① 파티셔닝
  • ② 샤딩
  • ③ 클러스터링
  • ④ 정규화
정답 및 해설 보기

정답 ③

클러스터링 = 같은 DB를 여러 서버에 복제 = 가용성(HA·Failover).

보기 목적 가용성
① 파티셔닝 병행성(한 DB)
② 샤딩 확장성(여러 DB)
③ 클러스터링 가용성(복제·HA) ✅ 정답
④ 정규화 무결성

🔑 암기 한·여·복 — 파티(한 DB·병행)·샤딩(여러 DB·확장)·클러스터링(복제·가용).


한 장 요약

VIEW — 가물독기

가상 테이블 물리 저장 ❌ 독자 인덱스 ❌ 기본 테이블 의존
  • 갱신 = 단순 SELECT 한 테이블만 ✅ / JOIN·집계·GROUP BY ❌
  • DROP VIEW = RESTRICT(의존 있으면 거부·디폴트) / CASCADE(연쇄 삭제)

INDEX

  • 트레이드오프 — SELECT↑ / 변경 3종(INSERT·UPDATE·DELETE)↓ / 저장 공간↑
  • 자료구조 — B+Tree(범위✅·표준) / B-Tree(=Balanced·리프 연결❌) / 해시(등호만·O(1)) / 비트맵(낮은 카디·DW)
  • 클러스터형(PK 자동·1개·물리 정렬) vs 비클러스터형(UNIQUE 자동·N개·별도)
  • 카디 낮은 컬럼(성별·상태)에는 인덱스 ❌

파티셔닝 — 범해리복 (수평 분할 4종)

범위(Range) 해시(Hash) 리스트(List) 복합(Composite)
구간 균등·등호만 명시 값·이산 두 방식 조합
  • 수평=행(Row) / 수직=열(Column) · 효과 = 검색·관리·병행성 강화·부분 가용성

3분별 — 한·여·복

기법 범위 분할 목적
파티셔닝 한 DB 안 수평(범해리복) 병행성
샤딩 여러 DB 수평(샤드 키) 확장성
클러스터링 여러 서버 복제(분할 없음) 가용성

핵심 함정 5쌍

  • VIEW에 CREATE INDEX ❌ (독자 인덱스 없음) · 인덱스 많아도 변경은 느려짐
  • 해시 인덱스 범위 검색 ❌ (등호만) · 클러스터형 인덱스는 1개만 (N개 ❌)
  • 수평=행 (열 ❌) · 파티셔닝 ≠ 샤딩 (한 DB vs 여러 DB) · 클러스터형 인덱스 ≠ DB 클러스터링
전체 목록 필기 이론

합격까지

정처기, 혼자 막막하다면

초개인화 학습앱 Klue와 에듀윌 온라인강의로 합격까지 이어가세요.