자격증/SQLD

[SQLD 개념 - 1과목 Part2. 데이터모델과 성능] 3) 반정규화와 성능

  • -
728x90

3) 반정규화와 성능

1. 반정규화를 통한 성능향상 전략

  • 반정규화의 정의

    • 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상&개발&운영의 단순화를 위해

    • 협의 : 데이터를 중복하여 성능을 향상시키기 위한 기법

    • 광의 : 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정

    • 정규화를 거치면 입력/수정/삭제 뿐만 아니라 조회에 대한 성능도 향상된다. 하지만 엔터티의 개수와 관계가 증가하기 때문에 여러 조인을 통해 데이터를 가져오는 경우가 발생한다. 이에 대한 해법으로 반정규화를 진행한다.

    • 설계단계에서 반정규화를 적용하기 위해 함수적 종속관계는 위반하지 않는 선에서 데이터 중복을 허가

  • 반정규화의 적용방법

    • 칼럼 중복을 통한 반정규화
      • 다른테이블에 조인하여 가져와야할 칼럼을, 기준이 되는 테이블에 중복하여 SQL문장을 단순하게 처리하는 것
    • 반정규화 진행에 앞서 칼럼의 반정규화 뿐만 아니라, 테이블의 반정규화와 관계의 반정규화 등 종합적인 검토가 필요
  • 반정규화 절차

    • 반정규화 대상 조사
      • 범위처리빈도수 조사 : 자주 사용되는 테이블에 접근하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우 반정규화를 검토
      • 대량의 범위 처리 조사 : 대량의 데이터를 포함한 테이블을 자주 처리하는 경우에 반정규화를 검토
      • 통계성 프로세스 조사 : 통계 정보를 필요로할 때 별도의 통계테이블(반정규화 테이블)을 생성하여 사용
      • 테이블 조인 개수 : 테이블에 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려운 경우 반정규화를 검토
    • 다른 방법유도 검토
      • 가급적이면 반정규화(데이터 무결성을 깨뜨리는 위험이 있기 때문에)가 아닌 다른 방법을 활용
      • 조인이 많이 걸린 테이블에 조회를 작업하는 경우 뷰(VIEW)를 사용하면 성능 향상을 이끌 수 있다
      • 응용 애플리케이션에서 로직을 개선한다
    • 반정규화 적용
      • 반정규화 대성 : 테이블, 속성, 관계에 대해 반정규화를 적용할 수 있다
      • 대상에 대해 중복 또는 분할의 추가 작업 수행을 통해 반정규하를 진행한다

2. 반정규화의 기법

  • 테이블 반정규화

    • 테이블 병합
      • 1:1 관계를 통합한 테이블을 통해 성능 향상
      • 1:M 관계를 통합한 테이블로 성능 향상
      • 슈퍼/서브 관계를 통합한 테이블로 성능 향상
    • 테이블 분할
      • 수직 분할 : 칼럼 단위의 테이블을 1:1로 분리하여 성능 향상(먼저 트랜잭션 처리 유형을 파악해야 함)
      • 수평 분할 : raw 단위로 집중되는 트랜잭션을 분석하여 raw단위로 테이블을 분리하여 데이터 접근 효율성을 높임
    • 테이블 추가
      • 중복테이블 추가 : 업무 또는 서버가 다른경우, 동일한 테이블 구조를 중복하여 원격조인을 제거함으로써 성능 향상
      • 통계테이블 추가 : SUM, AVG 등 미리 계산 결과를 저장한 테이블을 추가하야 조회 시 성능 향상
      • 이력테이블 추가 : 마스터테이블에 존재하는 레코드를 중복하여 이력테이블에 저장하는 방법
        • 이력 데이터에 관련한 정보 확인
      • 부분테이블 추가 : 테이블 안에 집중적으로 자주 이용되는 칼럼들을 모아놓은 별도의 반정규화 된 테이블을 생성하여 성능 향상
  • 칼럼 반 정규화

    • 중복칼럼 추가 : 조인을 수행하면서 성능이 저하되는 것을 예방하기 위해 조인이 칼럼을 추가
    • 파생칼럼 추가 : 미리 계산을 수행하고 값을 칼럼에 보관하여 트랜잭션이 처리되는 시점에 사용
    • 이력테이블 칼럼 추가 : 이력테이블에 가능성 칼럼(최근값 여부, 시작과 종료 일자 등)을 추가하여 이력데이터 처리시 성능 향상
    • PK에 의한 칼럼 추가 : 단일 PK안에서 특정값을 별도로 조회하는 경우 성능 저하가 발생, PK안에 일반 속성을 포함시켜 성능 향상
    • 응용시스템 오작동을 위한 칼럼 추가 : 데이터 처리 이전 데이터를 임시적으로 중복하여 보관하는 기법
  • 관계 반 정규화

    • 중복관계 추가 : 데이터를 처리하기 위한 조인으로 발생하는 성능저하를 예방하기 위해 추가적인 관계를 맺는 방법
    • 관계의 반정규화는 데이터 무결성을 깨뜨리지 않고 데이터 처리 성능을 향상 시킬 수 있다(테이블과 칼럼에 대한 반정규화는 데이터 중복에 따른 문제가 발생할 수 있음)

출처 : https://blog.naver.com/handuelly/221709570862

 

SQLD, 1-2-3 반정규화와 성능

1. 반정규화를 통한 성능향상 전략가. 반정규화의 정의 - 반정규화 : 정규화된 엔터티, 속성, 관계에 대해 ...

blog.naver.com

 

728x90
300x250
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.