[sql] 데이터 정규화와 반정규화(2) - 반정규화

728x90

2. 반정규화(De-Normalizatioin)

- 데이터베이스의 성능 향상을 위하여 데이터 중복을 허용하고 조인을 줄이는 데이터베이스 성능 향상 방법

- 반정규화는 조회(select) 속도를 높이지만 데이터 모델의 유연성은 낮아진다.

 

1) 반정규화를 수행하는 경우

- 정규화에 충실하면 종속성 활용성은 향상되지만 수행 속도가 느려지는 경우

- 다량의 범위를 자주 처리해야하는 경우

- 특정 범위의 데이터만 자주 처리하는 경우

- 요약/집계 정보가 자주 요구되는 경우

 

2) 반정규화 절차

절차 설명
대상 조사 및 검토 데이터 처리 범위, 통계성 등을 확인해서 반정규화 대상 조사
다른 방법 검토 - 수행 전 다른 방법이 있는지 검토
- *클러스터링, 뷰, 인덱스 튜닝, 응용프로그램, 파티션 등 검토
반정규화 수행 테이블 속성, 관계 등을 반정규화

* 클러스터링: 인덱스 정보를 저장할 때 물리적으로 정렬해서 저장하는 방법, 조회 시 인접 블록을 연속적으로 읽기 때문에 성능이 향상된다.

*파티션 기법 : 데이터베이스에서 파티션을 사용하여 테이블을 분할할 수 있다. 파티션을 사용하면 논리적으로는 하나의 테이블이지만 여러개의 데이터 파일에 분산되어 저장된다.

 

3) 반정규화 기법

① 계산된 컬럼 추가

-  배치프로그램으로 원래 존재하던 컬럼 외의 계산된 결과를 특정 컬럼에 추가한다.

 

② 테이블 수직분할

- 하나의 테이블을 두 개 이상의 테이블로 분할한다. 즉 컬럼을 분할하여 새로운 테이블을 만드는 것이다. (컬럼단위로 수직적으로 쪼개는 것)

 

③ 테이블 수평분할

- 하나의 테이블에 있는 값을 기준으로 테이블을 분할하는 방법(연도 컬럼을 2005~2010/ 2010~2015 이렇게 값 단위로 수평으로 쪼개는 것)

 

④ 테이블 병합

- 1:1 관계의 테이블을 하나의 테이블로 병합해서 성능을 향상시킨다.

-1:N 관계의 테이블을 병합하여 성능을 향항시킨다. 하지만 많은 양의 데이터 중복이 발생한다.

- 슈퍼타입과 서브타입 관계가 발생하면 테이블을 통합하여 성능을 향상시킨다.

 

 

728x90