[SQLD] 1-2 데이터 모델과 성능(반정규화)

이하영·2023년 3월 13일
0

SQLD 자격증

목록 보기
7/10

SQLD 자격증 공부하면서 정리한 내용들을 작성한 글입니다.

3. 반정규화와 성능

(1) 반정규화(Denormalization)란?

  • 정규화된 엔터티, 속성, 관계에 대해 성능 향상을 목적으로 중복, 통합, 분리를 수행하는 데이터 모델링 기법

(2) 반정규화 특징

  • 테이블, 칼럼, 관계의 반정규화를 종합적으로 고려해야 함
    • 일반적으로 속성(칼럼)의 중복을 시도함
  • 과도한 반정규화는 데이터 무결성을 침해하게 된다.
  • Disk I/O를 감소시키고, 긴 조인 쿼리문으로 인한 성능 저하를 해결한다.
  • 중복성의 원리를 활용해 데이터 조회 시 성능이 향상됨

(3) 반정규화 절차

  1. 반정규화 대상 조사
    • 범위 처리 빈도수 조사
    • 대량의 범위 처리 조사
    • 통계성 프로세스 조사
    • 테이블 조인 개수
  2. 다른 방법 유도 검토
    • 뷰(VIEW) 테이블
    • 클러스터링 적용
    • 인덱스의 조정
    • 응용 애플리케이션
  3. 반정규화 적용
    • 테이블 반정규화
    • 속성의 반정규화
    • 관계의 반정규화

(4) 반정규화 기법

  • 칼럼 반정규화

    • 중복칼럼 추가
      • 조인을 감소시키기 위해 중복된 칼럼 추가(조인할 필요↓)
    • 파생칼럼 추가
      • 계산하는 것들은 미리 계산하여 칼럼에 보관(SUM,AVG 등)
    • 이력테이블칼럼 추가
      • 기능성 칼럼 추가(시작 및 종료일자 등)
    • PK의 의미적 분리를 위한 칼럼 추가
      • PK가 복합 의미를 갖는 경우, 조회 성능 향상을 위해 일반 속성을 추가
    • 데이터 복구를 위한 칼럼 추가
      • 이전 데이터를 임시적으로 중복 저장
  • 테이블 반정규화

    • 테이블 병합 - 관계 병합(두 테이블의 동시 조회가 많은 경우), 슈퍼/서브타입 병합
    • 테이블 분할 - 수직 분할(칼럼 단위로 분리), 수평 분할(로우 단위로 분리)
    • 테이블 추가 - 중복 테이블 추가, 통계 테이블 추가, 이력 테이블 추가, 부분 테이블 추가(자주 이용하는 칼럼만 모아 별도 테이블 형성)
  • 관계 반정규화

    • 중복관계 추가
      • 조인을 통해 정보 조회가 가능하지만, 조인 경로 단축을 위해 중복관계를 추가함
profile
안녕하세요, 웹 개발자 이하영입니다!

0개의 댓글