2. 반정규화(De-Normalizatioin)
- 데이터베이스의 성능 향상을 위하여 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법
- 반정규화는 조회(select) 속도를 높이지만 데이터 모델의 유연성은 낮아진다.
1) 반정규화를 수행하는 경우
- 정규화에 충실하면 종속성 활용성은 향상되지만 수행 속도가 느려지는 경우
- 다량의 범위를 자주 처리해야하는 경우
- 특정 범위의 데이터만 자주 처리하는 경우
- 요약/집계 정보가 자주 요구되는 경우
2) 반정규화 절차
절차 | 설명 |
대상 조사 및 검토 | 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상 조사 |
다른 방법 검토 | - 수행 전 다른 방법이 있는지 검토 - *클러스터링, 뷰, 인덱스 튜닝, 응용프로그램, 파티션 등 검토 |
반정규화 수행 | 테이블 속성, 관계 등을 반정규화 |
* 클러스터링: 인덱스 정보를 저장할 때 물리적으로 정렬해서 저장하는 방법, 조회 시 인접 블록을 연속적으로 읽기 때문에 성능이 향상된다.
*파티션 기법 : 데이터베이스에서 파티션을 사용하여 테이블을 분할할 수 있다. 파티션을 사용하면 논리적으로는 하나의 테이블이지만 여러개의 데이터 파일에 분산되어 저장된다.
3) 반정규화 기법
① 계산된 컬럼 추가
- 배치프로그램으로 원래 존재하던 컬럼 외의 계산된 결과를 특정 컬럼에 추가한다.
② 테이블 수직분할
- 하나의 테이블을 두 개 이상의 테이블로 분할한다. 즉 컬럼을 분할하여 새로운 테이블을 만드는 것이다. (컬럼단위로 수직적으로 쪼개는 것)
③ 테이블 수평분할
- 하나의 테이블에 있는 값을 기준으로 테이블을 분할하는 방법(연도 컬럼을 2005~2010/ 2010~2015 이렇게 값 단위로 수평으로 쪼개는 것)
④ 테이블 병합
- 1:1 관계의 테이블을 하나의 테이블로 병합해서 성능을 향상시킨다.
-1:N 관계의 테이블을 병합하여 성능을 향항시킨다. 하지만 많은 양의 데이터 중복이 발생한다.
- 슈퍼타입과 서브타입 관계가 발생하면 테이블을 통합하여 성능을 향상시킨다.
'IT 정보 > 코딩' 카테고리의 다른 글
[SQL] 문자열 관련 함수(length, upper, lower 등) (0) | 2023.03.12 |
---|---|
[sql] 엔터티 식별자(Entity Identifier) (0) | 2023.03.05 |
[sql] 데이터 정규화와 반정규화(1) - 정규화 (1) | 2023.03.05 |
[my SQL] sql의 집계함수와 산술함수 (0) | 2023.03.01 |
[my SQL] sql null값 채우기, null의 특징 (0) | 2023.03.01 |