💡 핵심 인사이트
물리적 설계(Physical Design)는 데이터베이스 설계의 마지막 4단계로, 훌륭하게 정규화를 마친 논리적 도면을 들고 "이 데이터를 실제 하드디스크(SSD)의 어느 주소에, 어떤 파일 형태로, 어떻게 하면 0.1초라도 더 빨리 긁어오게(검색 성능 극대화) 꽂아 넣을 것인가?"를 결정하는 지독한 '성능 튜닝' 단계입니다.


Ⅰ. 물리적 설계의 목표와 고려사항

이전 단계인 '논리적 설계'가 인간의 머리로 이해할 수 있는 릴레이션(테이블) 뼈대를 만들었다면, 물리적 설계는 철저하게 기계(디스크 I/O)를 배려하는 설계입니다.

  • 핵심 목표: 데이터베이스의 처리 성능(응답 시간 단축), 디스크 저장 공간의 효율적 사용, 트랜잭션 처리량(TPS) 극대화.
  • 주요 고려 대상:
    • 어떤 DBMS(오라클, MySQL, PostgreSQL)를 쓸 것인가? (제품마다 물리적 저장 엔진 방식이 다름).
    • 특정 컬럼의 데이터가 텍스트 위주인지 숫자 위주인지, 쿼리(SELECT)가 하루에 몇만 번이나 호출되는지(트랜잭션 모델링)를 분석합니다.

Ⅱ. 물리적 설계의 4대 핵심 작업

이 단계에서 DBA(데이터베이스 관리자)가 피를 깎으며 세팅하는 4가지 튜닝 기술입니다.

1. 데이터 타입과 크기 (Storage Format) 확정

  • 논리 설계에서 "이름은 문자열"이라고 했다면, 물리 설계에서는 디스크 용량을 아끼기 위해 "이름은 VARCHAR(50), 가입일은 DATE"라고 바이트 단위로 깐깐하게 자료형의 길이를 확정 짓습니다.

2. 인덱스 (Index) 설계 ★가장 중요

  • 수천만 건의 회원 테이블에서 홍길동을 1초 만에 찾기 위해, 책의 '맨 뒤 색인(목차)' 같은 구조를 만듭니다.
  • B-Tree 인덱스: 일반적인 동등(=), 범위(>) 검색이 빈번한 컬럼에 나무 잔가지 모양의 B-Tree 인덱스를 겁니다.
  • 비트맵 인덱스: 성별(남/여)이나 부서(영업/기획)처럼 경우의 수(Cardinality)가 아주 적은 컬럼에 비트(0과 1) 맵을 씌워 초고속으로 통계를 낼 때 씁니다.

3. 테이블 파티셔닝 (Partitioning)

  • 10년 치 결제 내역 10억 건이 든 뚱뚱한 테이블을 조회하면 디스크가 터집니다.
  • 이를 논리적으로는 1개의 테이블로 보이게 놔두고, 물리적인 하드디스크 단에서는 '2023년 결제(1번 디스크)', '2024년 결제(2번 디스크)'처럼 행 단위로 싹둑싹둑 썰어서 분산 저장(Range Partitioning) 해버립니다. 검색 속도가 비약적으로 상승합니다.

4. 클러스터링 (Clustering)

  • "A부서 직원들의 데이터는 조회할 때 항상 세트로 같이 불려 나오네?"
  • 디스크 이곳저곳에 흩어져 있는 A부서 직원들의 데이터를, 하드디스크의 '같은 물리적 구역(Block)'에 강제로 오밀조밀하게 모아서 쑤셔 넣어, 나중에 디스크 암(Arm)이 한 번만 쓱 훑어도 데이터를 다 퍼올릴 수 있게 배치하는 극강의 디스크 I/O 최적화 기술입니다.

Ⅲ. 논리적 설계와의 차이점

  • 논리적 설계: ERD ➔ 테이블 (DBMS 독립적) / 이상 현상 제거(정규화)에 몰두.
  • 물리적 설계: 테이블 ➔ 하드디스크 (DBMS 종속적) / 조회 속도 향상(인덱스, 반정규화)에 몰두.

📢 섹션 요약 비유: 논리적 설계가 "1층은 도서관, 2층은 식당으로 하자"는 **'건축 평면도'**라면, 물리적 설계는 "식당에 사람들이 많이 몰리니 바닥은 대리석을 깔고, 정수기(자주 찾는 데이터)는 주방 구석이 아니라 홀 한가운데 놔둬서 알바생 동선(디스크 I/O)을 3초 단축하자!"라고 결정하는 극단적으로 현실적인 **'인테리어 및 동선 최적화 작업'**입니다.