본문 바로가기
알고리즘/프로그래머스

[#SQLD] 제 3절 반정규화의 성능

by dopal2 2023. 2. 9.
반응형

3절 반정규화의 성능

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

           . 반정규화의 정의

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

           데이터 조회 시 디스크I/O량이 많아서 성능이 저하 or 경로가 너무 멀어 조인으로 인한 성능 저하를 막기 위해 수행

           데이터의 중복성을 증가시켜야만 데이터 조회 성능을 향상시키는 경우, 반정규화를 통해 성능 향상

           . 반정규화의 적용방법

                     1) 반정규화 대상조사

                     - 범위처리 빈도수 조사

                     - 대량의 범위 처리 조사

                     - 통계성 프로세스 조사

                     - 테이블 조인 개수

 

                     2) 다른 방법유도 검토

                     - 뷰 테이블

                     - 클러스터링 적용

                     - 인덱스의 조정

                     - 응용 애플리케이션

 

                     3) 반정규화 적용

                     - 테이블 반정규화

                     - 속성의 반정규화

                     - 관계의 반정규화

 

2. 반정규화의 기법

           . 테이블 반정규화

                     - 테이블 병합

                     * 1:1 관계 테이블 병합

                     * 1:M 관계 테이블 병합

                     * 슈퍼/서브타입 테이블 병합

 

                     - 테이블 분할

                     * 수직분할 : 칼럼단위의 테이블을 디스크I/O를 분산처리 하기 위해 테이블을 1:1로 분리하여 성능 향상

                     * 수평분할 : 로우 단위로 집중 발생되는 트랜잭션을 분석하여 디스크I/O 및 데이터 접근의 효율성을 높여 성능향상하기 위해 로우 단위로 테이블을 쪼갬.

 

                     - 테이블 추가

                     * 중복테이블 추가 : 다른 업무/다른 서버의 경우 동일한 테이블 구조를 중복하여 원격 조인을 제거하여 성능 향상

                     * 통계테이블 추가 : SUM, AVG등을 미리 수행하여 계산해둠으로서 조회 시 성능을 향상

                     * 이력테이블 추가 : 이력 테이블 중에 마스터 테이블에 존재하는 레코드를 중복하여 이력 테이블에 존재하는 방법은 반정규화의 유형

                     * 부분테이블 추가 : 자주 사용되는 칼럼을 모아놓은 별도의 반정규화 테이블을 생성

 

           . 칼럼 반정규화

           - 중복 칼럼 추가 : 조인감소를 위한 중복된 칼럼을 위치

           - 파생 칼럼 추가 : 계산에 의해 발생되는 성능저하를 예방하기 위해 미리 계산하여 칼럼에 보관

           - 이력테이블 칼럼 추가 : 대량의 이력테이블 조회 시 발생 가능한 성능 저하를 예방하기 위해 이력에 기능성 칼럼을 추가

           - PK에 의한 칼럼 추가 : 단일 PK안에서 특정 값을 별도로 조회하는 경우성능저하 발생할 수 있어 일반속성으로 표현

           - 응용시스템 오작동을 위한 칼럼추가 : 데이터 처리를 잘못하여 이전 데이터로 복구하기 원하는 경우 이전 데이터를 임시적으로 중복하여 보관하는 기법

 

           . 관계 반정규화

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

 

3. 정규화가 잘 정의된 데이터 모델에서 성능이 저하될 수 있는 경우

 : SQL문장의 성능과 단순성을 고려하지 않고 무모하게 설계된 경우

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

 : 데이터베이스 서버가 분리되어 분산 데이터 베이스가 구성되어 반정규화를 통해 성능을 향상시킬 수 있는 경우

반응형

댓글