SQL개발자 (SQLD)

SQLD 노랭이 41,42번 반정규화 개념정리

유혁스쿨 2023. 5. 31. 11:53
728x90
반응형

테이블의 반정규화

테이블 병합, 분할, 추가 기법이 있다.

병합 : 1:1, 1:M, 서브/슈퍼타입 3가지 유형의 테이블 병합

분할 : 수직, 수평 2가지 유형의 테이블 분할

추가 : 중복테이블, 통계테이블, 이력테이블, 부분테이블 3가지 유형의 테이블 추가

기법분류 반정규화 기법 내용
테이블 병합 1:1 관계 테이블 병합 1:1 관계를 통합하여 성능 향상
1:M 관계 테이블 병합 1:M 관계를 통합하여 성능 향상
슈퍼/서브타입 테이블 병합 슈퍼/서비스 관계를 통합하여 성능 향상
테이블 분할 수직분할 컬럼단위의 테이블에서 디스크I/O를 분산처리하기 위해 테이블을 1:1로 분리하여 성능향상
(트랜잭션의 처리되는 유형을 파악하는것이 선행되어야 한다.)
수평분할 로우 단위로 집중 발생되는 트랜잭션을 분석하여 디스크I/O및 데이터접근의 효율성을 높여 성능을 향상하기 위해 로우단위로 테이블을 쪼갠다.(관계가 없음)
테이블 추가 중복테이블 추가 다른 업무이거나 서버가 다른 경우 동일한 테이블 구조를 중복하여 원격조인을 제거하여 성능을 향상
통계테이블 추가 SUM, AVG등을 미리 수행하여 계산해 둠으로써 조회시 성능을 향상
이력테이블 추가 이력 테이블 중에서 마스터 테이블에 존재하는 레코드를 중복하여 이력 테이블에 존재하는 방법
부분테이블 추가 하나의 테이블의 전체 컬럼 중 자주 이용하는 집중화된 컬럼들이 있을 때 디스크 I/O를 줄이기 위해 해당 컬럼들을 모아놓은 별도의 반정규화된 테이블을 생성.

컬럼의 반정규화

중복컬럼, 파생컬럼, 이력테이블 컬럼, PK에 의한 컬럼, 응용시스템 오작동을위한 컬럼 5가지 유형의 컬럼 추가

반정규화 기법 내용
중복컬럼 추가 조인에 의해 처리할 때 성능 저하를 예방하기 위해 즉, 조인을 감소시키기 위해 중복된 컬럼을 위치시킴

조인 감소를 위해 여러 테이블에 동일한 컬럼을 갖도록 한다.
파생컬럼 추가 트랜잭션이 처리되는 시점에 계산에 의해 발생되는 성능저하를 예방하기 위해 미리 값을 계산하여 컬럼에 보관한다. (Derived Column이라고 함)

조회 성능을 우수하게 하기 위해 미리 계산된 컬럼을 갖도록 한다.
이력테이블 컬럼 추가 대량의 이력데이터를 처리할 때 불특정 날 조회나 최근 값을 조회할 때 나타날 수 있는 성능저하를 예방하기 위해 이력테이블에 기능성 컬럼(최근값 여부, 시작과 종료일자 등)을 추가함

최신값을 처리하는 이력의 특성을 고려하여 기능성 컬럼을 추가한다.
PK에 의한 컬럼 추가 복합의미를 갖는 PK를 단일 속성으로 구성하였을 경우 발생.
단일 PK안에서 특정 값을 별도로 조회하는 경우 성능 저하 발생 가능성 존재
이미 PK안에 데이터가 존재하지만 성능 향상을 위해 일반 속성으로 포함하는 방법
응용시스템 오작동을 위한 컬럼 추가 업무적으로는 의미가 없지만 사용자가 데이터처리를 하다가 잘못 처리하여 원래 값으로 복구하기를 원하는 경우 이전 데이터를 임시적으로 중복하여 보관하는 기법.
컬럼으로 이것을 보관하는 방법은 오작동 처리를 위한 임시적인 기법이지만 이것을 이력데이터 모델로 풀어내면 정상적인 데이터 모델의 기법이 될 수 있음.

중복컬럼

파생컬럼

이력테이블컬럼

PK에의한컬럼

응용시스템오작동을위한컬럼

728x90
반응형