SQL (반정규화)


반정규화
  • 정규화 된 데이터 모델에 대해 성능 향상을 위해 데이터를 중복, 통합, 분리 하는 기법
  • 정규화 시 엔티티 개수 증가 -> 여러 조인 요구


반정규화의 특징
  • 조회(SELECT) 속도 향상
  • 데이터 모델의 유연성은 저하
  • 입력, 수정, 삭제 성능 저하


반정규화를 하는 이유
  • 정규화를 통해 엔티티와 관계 수가 많아져서 조회 시 ‘조인’으로 인한 성능 저하가
    예상될 때
  • 조인으로 인한 I/O 양이 너무 많아져서 처리 성능이 저하 될 때
  • 중복성을 증가시켜 조회 성능을 향상시킴


테이블을 가지고 반정규화 하는 방법
  • 테이블 병합
    • 1:1 관계 테이블 병합
    • 1:M 관계 테이블 병합
  • 테이블 분할
    • 테이블 수직 분할 (속성 분할)
      • 트랜잭션 처리 유형 파악이 필요
        • 반정규화에서 테이블 수직 분할 할 때 필요
          • 테이블 속성 개수 많을 떄, 조회 성능 향상을 위해
    • 테이블 수평 분할 (파티션)
      • 물리적으로 데이터 분리
  • 테이블 추가
    • 중복 테이블 추가
    • 통계 테이블 추가
    • 이력 테이블 추가
    • 부분 테이블 추가