본문 바로가기

자격증/SQLD

반정규화와 성능

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


반정규화의 정의(De-Normalicztion)

정규화된 엔티티, 소것ㅇ, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법


반정규화 적용 이유

  1. 데이터 조회시 IO양이 많아 성능 저하

  2. 경로가 너무 멀어 조인으로 인항 성능 저하

  3. 칼럼 계산할 때 성능 저하



정규화 수행의 단점

엔티티의 개수가 증가하고, 관계가 많아져 일부 여러 개의 조인이 걸려야만 데이터를 가져오는 경우


반 정규화를 기술적으로 수행하지 않는 경우의 발생 현상

  • 성능 저하된 데이터베이스 생성

  • 구축단계, 시험단계의 반정규화 적용 시 수정비용이 많이 듦



반정규화 적용 방법


  1. 반정규화의 대상 조사

    - 자주 사용되는 테이블에 접근하는 프로세스 수가 많고 항상 일정한 범위만을 조회하는 경우
    - 대량의 데이터가 있고 데이터의 범위를 자주 처리하는 경우
    - 통계 정보가 필요할 때는 통계테이블 생성
    - 테이블에 지나치게 많은 조인이 걸려 있는 경우

  2. 반정규화 대상에 대해 다른 방법으로 처리할 수 있는지 검토

    뷰 사용 : 개발자 별로 다른 SQL을 작성할 수 있으므로 성능저하의 위험 예방
    클러스터링, 인덱스 : CUD성능이 하향되므로, 조회 위주의 테이블만 가능
    파티셔닝 기법 : 특정 키에 따라서 데이터를 물리적으로 분리해 저장함
    애플리케이션 로직 변경 : 근본적 문제 해결

  3. 반정규화 적용
    대상 : 테이블, 속성, 관계




4. 정규화가 잘 정의된 데이터 모델에서 성능이 저하된 경우


서로 다른 데이터베이스 서버에 다른 테이블이 존재함에도 조인이 필요한 경우, 성능이 저하될 수 밖에 없다, 따라서 해당 업무의 필요한 데이터 컬럼을 하위 테이블이 존재하는 데이터베이스 서버에 반 정규화함으로써 조인을 제거할 수 있다.



'자격증 > SQLD' 카테고리의 다른 글

데이터베이스 구조와 성능  (0) 2016.09.09
대량 데이터에 따른 성능  (0) 2016.09.09
성능 데이터 모델링의 개요  (0) 2016.09.02
식별자  (0) 2016.09.02
관계(Relation Ship)  (0) 2016.09.02