1. 성능 데이터 모델링
> 성능 데이터 모델링의 정의
- 성능 데이터 모델링이란 데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 선능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것이다.
> 성능 데이터 모델링 수행시점
- 성능 향상을 위한 비용은 프로젝트 수행 중에 있어서 사전에 할 수록 비용이 들지 않는다.
- 특히 분석/설계 단계에서 데이터 모델에 성능을 고려한 데이터 모델링을 수행할 경우 성능저하에 따른 재업무 비용을 최소화 할 수 있는 기회를 가지게 된다.
> 성능 데이터 모델링 고려하사항
- 데이터 모델링을 할 때 정규화를 정확하게 수행한다.
- 데이터베이스 용량산정을 수행한다.
- 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.
- 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.
- 이력모델의 조정, PK/FK조정, 슈퍼타입/서브타입 조정 등을 수행한다.
- 성능관점에서 데이터 모델을 검증한다.
2. 정규화와 성능
> 정규화를 통한 성능 향상 전략
- 정규화를 수행한다는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여 입력/수정/삭제 이상현상을 제거하는 것이다.
- 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다.
- 일반적으로 정규화를 수행해야 데이터처리의 성능이 향상이 되며 데이터를 조회처리 트랜잭션시에 성능저하가 나타날 수 있음.
> 정규화 이론
: 1차, 2차, 3차, 보이스코드 정규화는 함수종속성에 근거하여 정규화를 수행하고 4차 정규화는 속성의 값이 여러개 발생하는 다치종속, 5차 정규화는 조인에 의해 발생하는 이상현상 제거로 정규화
- 1차 정규화 : 복수의 속성값을 갖는 속성을 분리 → 속성의 원자성 확보
- 2차 정규화 : 주식별자에 완전종속적이지 않은 속성의 분리
- 3차 정규화 : 일반 속성에 종속적인 속성의 분리
- 보이스 - 코드 정규화 : 결정자안에 함수종속을 가진 주식별자 분리
- 4차 정규화 : 다가 종속 속성 분리
- 5차 정규화 : 결합종속일 경우는 두개이상의 N개로 분리
> 반정규화된 테이블의 성능 저하 사례 - 정규화 통한 성능 저하 없음
- 2차 정규화를 적용한 테이블에 대해서 조인을 하더라도 PK unique Index를 이용하면 조인 성능 저하는 미미하게 발생
> 반정규화된 테이블의 성능 저하 사례 - 반정규화가 성능저하
- 대량의 데이터에서 조인 조건이 되는 대상을 찾기 위해 인라인뷰를 사용하기 때문에 성능이 저하된다.
> 반정규화된 테이블의 성능 저하 사례 - 정규화를 통해 성능 개선
> 반정규화된 테이블의 성능 저하 사례 - 과다인덱스 생성 유도
- 동일한 속성 형식을 두 개 이상의 속성으로 나열하여 반정규화한 경우에 해당
3. 반정규화와 성능
> 반정규화의 정의
- 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능 향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법
- 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능 저하가 예상되거나 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우
- 비정규화는 아예 정규화를 수행하지 않은 모델을 지칭
> 반정규화 적용 절차
- 반정규화를 적용하기 위해서는 먼저 반정규화의 대상을 조사하고 다른 방법을 적용할 수 있는지 검토하고 이 이후에 반정규화를 적용하도록 한다.
> 반정규화 기법 : 테이블 반정규화
- 테이블 병합
- 테이블 분할
- 테이블 추가
> 반정규화 기법 : 컬럼 반정규화
- 중복 칼럼 추가
- 파생 칼럼 추가
- 이력 테이블 칼럼 추가
- PK에 의한 칼럼 추가
- 응용 시스템 오작동을 위한 칼럼 추가
> 반정규화 기법 : 관계 반정규화
- 중복 관계 추가
> 정규화된 테이블의 성능 저하 사례 - 반정규화를 통해 해결
출처 : 한국데이터산업진흥원 게시자료