* 성능 데이터 모델링
- 데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블통합, 테이블분할, 조인구조, 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) 성능 튜닝
- 정규화의 조인으로 성능이 떨어진 것을 해결
① 인덱스와 옵티마이저 사용..
② 반정규화 하여 하나의 테이블에 저장하여 조인을 막음 (그러나 반정규화도 문제점을 발생시킴)
'[자격증] SQLD (SQL Developer)' 카테고리의 다른 글
[SQLD][책없이 공부]1과목 02. 데이터 모델과 성능_03 분산 데이터베이스 (0) | 2019.11.13 |
---|---|
[SQLD][책없이 공부]1과목 02. 데이터 모델과 성능_02 반정규화 (0) | 2019.11.13 |
[SQLD][책없이 공부]1과목 01. 데이터 모델링 (Data Modeling)_03 (0) | 2019.11.12 |
[SQLD][책없이 공부]1과목 01. 데이터 모델링 (Data Modeling)_02 (0) | 2019.11.12 |
[SQLD][책없이 공부]1과목 01. 데이터 모델링 (Data Modeling)_01 (0) | 2019.11.12 |