[SQLD / 자격증 공부] 요약 정리 5. 반정규화 기법
my code archive
article thumbnail
반응형

📖반정규화 기법

 

테이블 반정규화

테이블 병합

  • 1:1 관계 테이블 병합 
  • 1:M 관계 테이블 병합 
  • 슈퍼/서브 타입 테이블 병합 

테이블 분할

  • 수직 분할 : 칼럼 단위의 테이블을 디스크 I/O를 분산처리하기 위해 테이블을 1:1로 분리하여 성능 향상(트랜잭션의 처리되는 유형을 파악이 선행되어야함.)
  • 수평 분할 : 로우 단위로 집중 발생되는 트랜잭션을 분석하여 디스크 I/O 및 데이터 접근의 효율성을 높여 성능을 향상하기 위해 로우 단위로 테이블을 쪼갬

테이블 추가

  • 중복 테이블 추가 : 다른 업무이거나 서버가 다른 경우 동일한 테이블 구조를 중복하여 원격조인을 제거하여 성능을 향상
  • 통계 테이블 추가 : SUM, AVG 등을 미리 수행하여 계산해 둠으로써 조회 시 성능을 향상
  • 이력 테이블 추가 : 이력 테이블 중 마스터 테이블에 존재하는 레코드를 중복하여 이력 테이블에 존재하는 방법은 반정규화의 유형
  • 부분 테이블 : 하나의 테이블에 전체 칼럼 중 자주 이용하는 집중화된 칼럼들이 있을 시 디스크 I/O를 줄이기 위해 해당 칼럼들을 모아놓은 별도 반정규화된 테이블 생성

칼럼 반정규화

  • 중복칼럼 추가 : 조인에 의해 처리할 때 성능 저하를 예방하기 위해(조인 감소 위해) 중복된 칼럼을 위치시킴
  • 파생칼럼 추가 : 트랜잭션이 처리되는 시점에 계산에 의해 발생되는 성능 저하를 예방하기 위해 미리 값을 계산하여 칼럼에 보관함.
  • 이력 테이블 칼럼 추가 : 대량의 이력 데이터 처리 시 불특정 조회, 최근 값을 조회할 때 나타날 수 있는 성능 저하를 예방하기 위해 이력 테이블에 기능성 칼럼(최근값 여부, 시작과 종료일자 등)을 추가함.
  • PK에 의한 칼럼 추가
  • 응용 시스템 오작동을 위한 칼럼 추가

관계 반정규화

  • 중복관계 추가 : 데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하지만 이때 발생할 수 있는 성능 저하를 예방하기 위해 추가적인 관계를 맺는 방법이 관계의 반정규화임.
반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형