1. 반정규화를 통한 성능향상 전략
정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법
데이터 무결성 깨질 수 있는 위험이 있는데도 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많거나, 경로가 너무 멀어서 발생하는 조인으로 인하거나, 칼럼 계산하여 읽을 때 성능 저하가 예상되는 경우 반정규화를 수행한다.
프로젝트 설계 단계에서 반정규화를 기술적으로 수행하지 않으면
- 성능이 저하된 데이터베이스가 생성될 수 있다.
- 구축단계나 시험단계에서 반정규화를 적용할 때 수정에 따른 노력비용이 많이 들게 된다.
반정규화 적용 방법
1) 반정규화 대상조사
- 범위처리빈도수 조사
- 대량의 범위 처리 조사
- 통계성 프로세스 조사
- 테이블 조인 개수(많은 조인 검토)
2) 다른 방법유도 검토
- 뷰 테이블(많은 조인 시 해결 방법)
- 클러스터링 적용(대량의 데이터처리나 부분처리로 인해 성능 저하시 -> 대량의 데이터를 특정 클러스터링 팩트에 의해 저장방식을 다르게 하는 방법, 조회가 대부분이고 인덱스를 통해 성능향상이 불가능하면 고려할만함)
- 인덱스의 조정
- 응용애플리케이션
3) 반정규화 적용
- 테이블 반정규화
- 속성의 반정규화
- 관계의 반정규화
2. 반정규화 기법
1) 테이블 반정규화
- 테이블병합(1:1/1:M 관계 테이블병합, 슈퍼/서브타입 테이블병합)
- 테이블분할(수직(테이블 분리)/수평(로우단위로 쪼갬) 분할)
- 테이블추가(중복/통계/이력/부분 테이블 추가)
2) 칼럼 반정규화
- 중복칼럼 추가
- 파생칼럼 추가(트랜잭션 처리 시점에 계산에 의해 발생되는 성능저하 예방하기 위해 미리 계산하여 칼럼에 보관)
- 이력테이블 칼럼추가(이력테이블에 기능성 칼럼(최근값 여부, 시작과 종료일자 등) 추가
- PK에 의한 칼럼추가(성능향상을 위해 일반속성으로 포함하는 방법)
- 응용시스템 오작동을 위한 칼럼 추가(이전 데이터를 임시적으로 중복하여 보관)
3) 관계 반정규화
- 중복관계 추가(여러 경로를 거쳐 조인이 가능하지만 이 때 발생할 수 있는 성능저하를 예방하기 위해 추가적인 관계를 맺는 방법이 관계의 반정규화)
반정규화 적용 시 데이터 입력/수정/삭제 시 성능이 떨어지는 점을 기억하고 데이터의 무결성 유지에 주의
'데이터베이스 > SQLD' 카테고리의 다른 글
2-5 데이터베이스 구조와 성능 (0) | 2022.09.16 |
---|---|
2-4 대량 데이터에 따른 성능 (0) | 2022.09.16 |
2-2 정규화와 성능 (0) | 2022.09.16 |
2-1 성능 데이터 모델링 (0) | 2022.09.16 |
1-5 식별자 (0) | 2022.09.15 |