2장. 데이터 모델과 성능
1. 성능 데이터 모델링의 개요
- 성능 데이터 모델의 정의
- 정의
1. 데이터베이스 성능 향상을 목적으로 설계 단계의 데이터 모델링 때부터 성능 관련 사항이 데이터 모델링에 반영될 수 있도록 하는 것
- 성능 관련 사항: 정규화, 반정규화, 테이블 통합/분할, 조인 구조, PK, FK 등
- 데이터 모델의 성능 저하 원인
1. 데이터 모델 구조
- 대용량 데이터
- 특성을 고려하지 않고 인덱스 생성
- 수행 시점
- 일찍 수행할수록 비용이 저렴하고, 늦게 수행할수록 비용이 비싸진다.
- 분석/설계 단계에서 성능을 고려한 데이터 모델링을 수행할 경우, 성능 저하에 따른 재업무 비용을 최소화할 수 있다.
- 고려 사항
- 데이터 모델링 시, 정확한 정규화 수행.
- 데이터베이스 용량산정 실시
- 데이터베이스에 발생되는 트랜잭션의 유형 파악
- 용량과 트랜잭션 유형에 따른 반정규화 수행
- 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등 수행
- 성능 관점에서 데이터 모델 검증
2. 정규화와 성능
- 정규화
- 정의
1. 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여, 입력/수정/삭제 이상을 제거하는 것
2. 데이터의 일관성, 최소한의 데이터 중복 및 데이터 유연성을 위한 방법이며, 데이터를 분해하는 과정
- 정규화된 모델은 테이블이 분해됨.
- 불필요한 데이터를 입력하지 않아도 되므로 중복 데이터가 제거됨
- 절차
1. 제1정규화: 속성의 원자성 확보, 속성의 중복값 제거, 기본 키 설정
- 제2정규화: 기본 키가 복수인 속성에 대해 부분 함수 종속성 제거, 복합 인스턴스의 종속적 중복 제거
- 제3정규화: 기본 키 이외의 컬럼 간 종속성 제거, 이행 함수 종속성 제거, 일반속성 종속성 제거
- BCNF: 후보 키가 기본 키를 종속시킬 경우 제거, 복수의 후보 키가 복합 속성이고 중첨되는 경우에만 해당
- 4정규화, 5정규화 등이 있지만, 실무에서는 보통 제3정규화 수준으로 수행
- 정규화를 통한 성능 향상 전략
1. 데이터에 대한 중복성을 제거하여 데이터가 관심사별로 처리되는 경우가 많아지므로, 성능이 향상되는 특징
- 데이터 처리 성능: 조회 vs 입력/수정/삭제 > 한 파트의 성능 향상은 다른 파트의 성능 저하를 가져올 수 있다
- 함수적 종속성에 근거한 데이터 정규화 수행 필요
참고:
https://yganalyst.github.io/sql/SQL_5/#google_vignette
https://fromitot.tistory.com/86