제 3절 반정규화의 성능
1. 반정규화를 통한 성능향상전략
가. 반정규화의 정의
: 정규화 된 엔터티, 속성, 관계에 대해 시스템성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법을 의미
데이터 조회 시 디스크I/O량이 많아서 성능이 저하 or 경로가 너무 멀어 조인으로 인한 성능 저하를 막기 위해 수행
데이터의 중복성을 증가시켜야만 데이터 조회 성능을 향상시키는 경우, 반정규화를 통해 성능 향상
나. 반정규화의 적용방법
1) 반정규화 대상조사
- 범위처리 빈도수 조사
- 대량의 범위 처리 조사
- 통계성 프로세스 조사
- 테이블 조인 개수
2) 다른 방법유도 검토
- 뷰 테이블
- 클러스터링 적용
- 인덱스의 조정
- 응용 애플리케이션
3) 반정규화 적용
- 테이블 반정규화
- 속성의 반정규화
- 관계의 반정규화
2. 반정규화의 기법
가. 테이블 반정규화
- 테이블 병합
* 1:1 관계 테이블 병합
* 1:M 관계 테이블 병합
* 슈퍼/서브타입 테이블 병합
- 테이블 분할
* 수직분할 : 칼럼단위의 테이블을 디스크I/O를 분산처리 하기 위해 테이블을 1:1로 분리하여 성능 향상
* 수평분할 : 로우 단위로 집중 발생되는 트랜잭션을 분석하여 디스크I/O 및 데이터 접근의 효율성을 높여 성능향상하기 위해 로우 단위로 테이블을 쪼갬.
- 테이블 추가
* 중복테이블 추가 : 다른 업무/다른 서버의 경우 동일한 테이블 구조를 중복하여 원격 조인을 제거하여 성능 향상
* 통계테이블 추가 : SUM, AVG등을 미리 수행하여 계산해둠으로서 조회 시 성능을 향상
* 이력테이블 추가 : 이력 테이블 중에 마스터 테이블에 존재하는 레코드를 중복하여 이력 테이블에 존재하는 방법은 반정규화의 유형
* 부분테이블 추가 : 자주 사용되는 칼럼을 모아놓은 별도의 반정규화 테이블을 생성
나. 칼럼 반정규화
- 중복 칼럼 추가 : 조인감소를 위한 중복된 칼럼을 위치
- 파생 칼럼 추가 : 계산에 의해 발생되는 성능저하를 예방하기 위해 미리 계산하여 칼럼에 보관
- 이력테이블 칼럼 추가 : 대량의 이력테이블 조회 시 발생 가능한 성능 저하를 예방하기 위해 이력에 기능성 칼럼을 추가
- PK에 의한 칼럼 추가 : 단일 PK안에서 특정 값을 별도로 조회하는 경우성능저하 발생할 수 있어 일반속성으로 표현
- 응용시스템 오작동을 위한 칼럼추가 : 데이터 처리를 잘못하여 이전 데이터로 복구하기 원하는 경우 이전 데이터를 임시적으로 중복하여 보관하는 기법
다. 관계 반정규화
- 중복관계추가 : 데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하지만, 이 때 발생할 수 있는 성능 저하를 예방하기 위해 추가적인 관계를 맺는 방법이 관계의 반정규화
3. 정규화가 잘 정의된 데이터 모델에서 성능이 저하될 수 있는 경우
: SQL문장의 성능과 단순성을 고려하지 않고 무모하게 설계된 경우
4. 정규화가 잘 정의된 데이터 모델에서 성능이 저하된 경우
: 데이터베이스 서버가 분리되어 분산 데이터 베이스가 구성되어 반정규화를 통해 성능을 향상시킬 수 있는 경우
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[#프로그래머스] 신규 아이디 추천 (0) | 2023.02.13 |
---|---|
[#프로그래머스] 시저 암호 (0) | 2023.02.13 |
[#프로그래머스] 문자열 나누기 (0) | 2023.02.09 |
[#프로그래머스] 모의고사 (0) | 2023.02.09 |
[#프로그래머스] 제일 작은 수 제거하기 (0) | 2023.02.09 |
댓글