* 성능 데이터 모델링

- 데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블통합, 테이블분할, 조인구조, PK, FK 등 여러 가지 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것

- 성능 분석/설계 단계에서부터 성능에 대한 데이터모델 설계를 하지 않으면 시간이 지날수록 성능개선 비용이 증가

- 고려사항 

데이터 모델링을 할 때 정규화를 정확하게 수행


데이터베이스 용량산정을 수행


데이터베이스에 발생되는 트랜잭션의 유형을 파악


용량과 트랜잭션의 유형에 따라 반정규화를 수행


이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행.


성능관점에서 데이터 모델을 검증


1. 정규화 (Normalization)

1) 정규화

- 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성, 모델의 독립성을 확보하기 위한 데이터 분해 과정

- 제 1 정규화 ~ 제 5 정규화 까지 있지만 보통 제 3 정규화까지만 수행

- 정규화된 모델은 테이블이 분해됨. 분해된 테이블은 조인(Join)을 수행하여 하나의 합집합으로 만들수도 있음!


* 함수적 종속성 : 결정자 x -> 종속자 Y 이면 Y는 X에 함수적으로 종속한다.

X가 변화하면 Y도 변화하는지 확인해본다.


* 정규화 절차 (도부이결다조!) -> 함수적 종속성을 따짐

제1정규화 

 - 속성의 원자성을 확보 (도메인 원자값!) 

 - 기본키 설정 

 도메인 값을 원자값으로 만들고
 기본키를 찾아 기본키 설정!

 제2정규화

 - 기본키가 2개 이상의 속성으로 이루어질 경우 수행

 - 부분 함수 종속성을 제거(분해) 

 부분 함수 종속 : 기본키가 2칼럼일 때 속성이 한 칼럼에서 충분히 함수 종속적일 때

 제3정규화

 - 기본키를 제외한 칼럼 간의 종속성 제거

 - 이행 함수 종속성 제거 

 이행 함수 종속 : 기본키 제외하고 칼럼 간 종속   발생하는 것. A->B B->C A->C 이런 경우.

 BCNF

 - 기본키를 제외하고 후보키가 있는 경우, 후보키가 기본키를 종속시키면 분해

 결정자 아닌 후보키 제거  

 제4정규화

 - 다치 종속 제거

 - 여러 칼럼들이 하나의 칼럼을 종속시키는 경우 분해하여 다중값 종속성을 제거 

 

 제5정규화

 - 조인에 의해 종속성이 발생되는 경우 분해 (조인 종속 제거) 

 


2. 정규화의 성능

1) 정규화의 문제점

- (장.. 점...)정규화는 테이블을 분해해서 데이터 중복을 제거 -> 유연성이 높아짐

- 따라서, 데이터 조회(Select)시에 조인(Join)유발 -> CPU와 메모리 많이 사용


2) 성능 튜닝

- 정규화의 조인으로 성능이 떨어진 것을 해결

① 인덱스와 옵티마이저 사용..

② 반정규화 하여 하나의 테이블에 저장하여 조인을 막음 (그러나 반정규화도 문제점을 발생시킴)

+ Recent posts