본문 바로가기

SQL

SQLD 시험 대비 - 데이터 모델과 성능 (2)

3. 반 정규화 적용 ( 테이블, 칼럼, 관계 )

3-1 테이블 반 정규화 

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

1. 1:1관계를 통합하여 성능 향상

2. 1:M관계를 통합하여 성능향상

3. 슈퍼/서브 관계를 통합하여 성능향상 ( 슈퍼: 공통부분/ 서브: 공통으로부터 상속받아 다른 엔터티와 차이나는 특성)

 

테이블 분할( 수직분할, 수평분할)

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

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

 

테이블 추가

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

2. 통계 :  SUM , AVG 등을 미리 수행하여 계산해둠으로써 조회 시 성능 향상

3. 이력 : 이력 테이블 중에서 마스터 테이블에 존재하는 레코드를 중복하여 이력 테이블에 존재시켜 성능 향상

4. 부분 : 하나의 테이블의 전체 칼럼 중 자주 이용하는 집중화된 칼럼들이 있을 때 디스크(I/O) 를 줄이기 위해 해당 칼럼들을 모아놓은 별도의 반 정규화된 테이블을 생성  =  부분 테이블 추가 

 

3-2 칼럼 반정규화

1. 중복 칼럼 추가: 조인에 의해 처리할 때 성능 저하를 예방하기 위해 중복된 칼럼을 위치시킴

2. 파생 컬럼 추가 : 트랜잭션이 처리되는 시점에 계산에 의해 발생되는 성능 저하를 예방하기 위해 미리 값을 계산하여 칼럼에 보관

3. 이력 테이블 컬럼 추가: 대량의 이력 데이터를 처리할 때 불 특정 날 조회나 최근 값을 조회할 때 나타날 수 있는 성능 저하를 나타날 수 있는 성능 저하를 예방하기 위해 이력 테이블에 가능성 칼럼(최근값 여부 시작과 종료일자 등)을 추가함

4. 응용 시스템 오작동을 위한 칼럼 추가:

업무적으로는 의미가 없지만 사용자의 실수로 원래 값으로 복구하기 원하는 경우 이전 데이터를 임시적으로 중복하여 보] 관하는 기법

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

 

3-3 관계 반정규화: 무결성 유지

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

 

 

반응형